我有一个包含多对多关系和多语言的laravel项目。
我使用Laravel-Translatable包用于多语言。
该程序存储大量具有其属性的文件
每个属性在多个文件之间共享。但是每个属性在每个文件中都有不同的值。
表和他们的关系就像这张照片:tables diagram
我应该把attribute_value
放在哪个表中?
谢谢
答案 0 :(得分:0)
将attribute_value
添加到attrib_file
表格。因为每个与文件attribute_value
的连接应该是不同的。另一方面,每个文件存储属性值的数量。这就是attrib_file
数据透视表最适合的原因。
如何从数据透视表中检索信息在documentation:
$attr = App\Attribute::find(1);
foreach($attr->files as $file) {
echo $file->pivot->attribute_value;
}
确保在关系方法中添加->withPivot('attribute_value')
返回结束$this->belongsToMany('App\Models\File')
。在属性模型中应该是这样的:
..
public function files() {
return $this->belongsToMany('App\Models\File')->withPivot('attribute_value');
}