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想把它作为一个答案,这样我就可以给你信用了?