Php Laravel雄辩地检查先前的急负荷关系
我在链接关系方面遇到了一些麻烦。我想将其中三个链接起来,但这无法正常工作:Php Laravel雄辩地检查先前的急负荷关系,php,mysql,database,laravel,Php,Mysql,Database,Laravel,我在链接关系方面遇到了一些麻烦。我想将其中三个链接起来,但这无法正常工作: return UserModel::with('cars.pieces.attributes') 我不仅要检查属性的碎片,还要检查cars.pieces给出的结果。我必须知道这两件事和汽车给良好的属性 我想检索一个用户所选择的汽车,然后检索汽车的各个部分以及这些部分的属性。所有这些都是由用户选择的 只有cars.parties。我有我的用户,然后是cars数组,然后是这辆车的parties数组。当我添加属性时,我的属性
return UserModel::with('cars.pieces.attributes')
我不仅要检查属性的碎片,还要检查cars.pieces给出的结果。我必须知道这两件事和汽车给良好的属性
我想检索一个用户所选择的汽车,然后检索汽车的各个部分以及这些部分的属性。所有这些都是由用户选择的
只有cars.parties。
我有我的用户,然后是cars数组,然后是这辆车的parties数组。当我添加属性时,我的属性不是针对用户的汽车片段,而是针对任何汽车片段的属性
似乎该关系只查找上一个关系,而不是整个数据包
UserModel.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
我的关系可能是这样的:
有什么方法可以为用户检索汽车部件的属性
谢谢你的帮助
编辑:我有个主意。我可以检索汽车的碎片,然后根据where子句检查每个碎片的属性,同时使用id_碎片和id_汽车,然后将它们合并到我的原始数组中,但这将是无效的。首先,您在
attributes()
函数中交换了外键。应该是:
public function attributes(){
return $this->belongsToMany(AttributeModel::class, 'user_cars_pieces_attributes','id_piece', 'id_attribute');
}
其次,您没有指定在哪些模型上定义了每个关系,但是您可能更希望使用
hasMany
。例如,一个用户是否属于多辆车(然后像您当前一样使用belongTomany
),或者一个用户是否拥有多辆车,即多辆车属于一个用户(然后使用hasMany
)?谢谢您的回答!我编辑以指定定义关系的模型。我不小心换了,但代码中的代码很好。我认为通过定义每个关系,可以使用belongtomany。问题是,我不能定义一个关系,不仅仅是基于一个键,而是基于两个键,或者如果Eloquent不能支持这一点,我也不能定义一个替代方法。