我有四张桌子:
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时,是否可以使用附件?
答案 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]);
但是将两个关系混合在一个表中似乎很奇怪。