我在链接关系方面遇到一些麻烦。我想链接其中三个,但这无法正常工作:
return UserModel::with('cars.pieces.attributes')
我不仅必须检查部件的属性,还必须检查 cars.pieces 给出的结果。我必须了解零件和汽车才能赋予良好的属性
我想检索用户及其选择的汽车,然后检索汽车的部件以及这些部件的属性。所有这些都是由用户选择的。
只有cars.pieces。
我有我的用户,然后是汽车数组,然后是这辆车的碎片数组。当我添加属性时,我的属性不是用户汽车的属性,而是无论是什么汽车的属性。
看起来该关系只是在寻找先前的关系,而不是整个数据包。
用户模型.php
public function cars(){
return $this->belongsToMany(CarsModel::class, 'user_cars', 'id_user','id_cars');
}
然后在CarsModel.php
public function pieces(){
return $this->belongsToMany(PiecesModel::class, 'cars_pieces', 'id_cars','id_pieces')
}
最后在 PiecesModel.php 中:
public function attributes(){
return $this->belongsToMany(AttributeModel::class, 'user_cars_pieces_attributes', 'id_attribute', 'id_piece')
}
最后一个实体使用 4 个字段作为主键:
id_user, id_car, id_attribute, id_piece
我的关系可能是这样的:
有什么方法可以为用户检索汽车部件的属性?
感谢您的帮助!
编辑:我有一个想法这样做。我可以只检索汽车的碎片,然后对于每个碎片,我根据 id_pieces 和 id_cars 的 where 子句检查它们的属性,然后合并到我的原始数组中,但在我看来,这效率不高
最佳答案
首先,您交换了 attributes()
中的外键功能。应该是:
public function attributes(){
return $this->belongsToMany(AttributeModel::class, 'user_cars_pieces_attributes','id_piece', 'id_attribute');
}
其次,您没有指定在哪些模型上定义每个关系,但您可能更想使用 hasMany
。例如,一个用户是否属于许多汽车(然后像现在一样使用 belongsToMany
),或者一个用户是否拥有许多汽车,即许多汽车属于一个用户(然后使用 hasMany
)?
关于php - Laravel Eloquent 检查先前的急切加载关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54366667/