Laravel 多态模型仅适用于一个模型
我目前使用如下模型建立多态关系:Laravel 多态模型仅适用于一个模型,laravel,Laravel,我目前使用如下模型建立多态关系: public function productDetails() { return $this->morphMany(Productable::class, 'productable'); } 该模型被称为Productable 在模型中,我有: public function productable() { return $this->morphTo(); } 我有另一个名为Product的模型,可以访问可生产模型,如下所示: publ
public function productDetails()
{
return $this->morphMany(Productable::class, 'productable');
}
该模型被称为Productable
在模型中,我有:
public function productable()
{
return $this->morphTo();
}
我有另一个名为Product
的模型,可以访问可生产模型,如下所示:
public function productDetails()
{
return $this->morphMany(Productable::class, 'productable');
}
这正如预期的那样工作,我可以在Productable表中创建一条记录,如下所示:
$p = new Product;
$p->product_name = $request->product_name;
$p->product_type = $request->product_type;
$p->category_id = $request->product_category;
$p->description = $request->product_description;
$p->save();
$p->productDetails()->create([
'product_id' => $p->id,
]);
然而问题是我有另一种叫做Media
其中还包括:
公共函数productDetails()
{
返回$this->morphMany(Productable::class,'Productable');
}
在该模型上,我尝试编写如下记录:
$pMedia = new Media;
$pMedia->productDetails()->create([
'product_id' => $p->id,
'productable_id' => $value,
]);
我得到的错误是:
Integrity constraint violation: 1048 Column 'productable_id' cannot be null (SQL: insert into `productables` (`product_id`, `productable_id`, `productable_type`, `updated_at`, `created_at`) values (38, ?, App\Models\Media, 2021-03-04 18:46:51, 2021-03-04 18:46:51))
我做错了什么?我不应该以同样的方式给媒体写信吗?我想知道我遗漏了什么。dd/var\u dump($value)显示了什么?你确定$value不为空吗?string(1)“1”@sanderviserat至少我确定你必须设置两个字段
productable\u type
和productable\u id
,这需要知道它所涉及的正确型号。你需要保存媒体记录,否则它没有要设置的id,您可以在迁移/数据库中的表创建中将可生产的
关系设为空OK,就是这样。问题是,由于我没有得到媒体记录,身份证没有被识别。它不允许我静态设置“productable_id”@SanderVisser想把它作为一个答案,这样我就可以给你信用了?