我有多态性关系
codes (code, soure_id, source_type)
来源:
websites (id, url)
books (id, isbn)
我在模型中编码了必要的关系(morphto,morphmany)。
如何将源分配给代码:
$source = Book::first();
$code = new Code()
$code->code = 'huxawex123ad'
$code->source ... // How can I assign the book as the source?
$code->save();
关系:
class Code extends Eloquent {
public function source()
{
return $this->morphTo();
}
};
class Book extends Eloquent {
public function codes()
{
return $this->morphMany(Code::class, 'source');
}
};
MorphTo
关系类似于 BelongsTo
的关系。因此,假设您的Code
型号具有source()
方法设置以返回morphTo()
关系,则您的代码看起来像:
$source = Book::first();
$code = new Code()
$code->code = 'huxawex123ad'
$code->source()->associate($source);
$code->save();
此外,假设您的Book
型号具有codes()
方法设置以返回morphMany()
关系,则您的代码可以像这样清理:
$source = Book::first();
$source->codes()->create(['code' => 'huxawex123ad']);
我不看到为多态关系设置的适当字段
将这些字段添加到代码表:
sourceable_id - integer
sourceable_type - string
关系就像:
class website extends Model
{
/**
* Get all of the website's codes.
*/
public function codes()
{
return $this->morphMany('AppCode', 'sourceable');
}
}
然后在您的控制器中:
$source = Book::first();
$code = new Code()
$code->code = 'huxawex123ad'
$code->source ... // How can I assign the book as the source?
$code->save();
$source->codes()->save($code);