laravel滔滔不绝地讲述了许多与多个FK相关的人

时间:2017-03-20 12:59:27

标签: php laravel eloquent

我有四张桌子:

categories
id, name

products
id, name

files
id, location

category_product
id, cateogry_id, product_id, file_id

产品和类别以及产品和文件之间存在多对多的关系。两个关系都保存在表category_product中。 我还设置了适当的模型,现在想创建关联:

$category = new Category();
$category->name = "Electronics";
$category->save();

$file = new File();
$file->location = "some\path";
$file->save();

$product = new Product();
$product->save()
$product->Categories()->attach($category);
$product->Files()->attach($file);

但是,它抱怨FK违规。这是因为附加语句是按顺序处理的,第一个语句将失败,因为它只设置类别关系,而类别和文件是同时需要的。

当有多个FK时,是否可以使用附件?

1 个答案:

答案 0 :(得分:1)

Laravel文档说你可以为attach方法提供额外的数据:

  

将关系附加到模型时,您还可以传递要插入到中间表中的其他数据数组:

     

$ user-> roles() - > attach($ roleId,['expires'=> $ expires]);

https://laravel.com/docs/5.4/eloquent-relationships#many-to-many

在你的情况下:

$product->Categories()->attach($category, ['file_id' => $file->id]);

但是将两个关系混合在一个表中似乎很奇怪。