繁体   English   中英

Eloquent 嵌套复杂关系

[英]Eloquent nested complex relationship

我在链接关系方面遇到了一些麻烦。 我想链接其中三个,但这不能正常工作:

    return UserModel::with('cars.pieces.attributes')

我想用汽车检索用户。 他选择了一辆有零件的汽车,并且为每个零件选择了一个属性。

只有cars.pieces. 我有我的用户,然后是汽车阵列,然后是这辆车的零件阵列。 当我添加属性时,我的属性不是用户汽车的属性,而是汽车的属性。

似乎关系只是在寻找以前的关系而不是整个数据包。

    public function cars(){
        return $this->belongsToMany(CarsModel::class, 'user_cars', 'id_user','id_cars');
    }

然后

    public function pieces(){
        return $this->belongsToMany(PiecesModel::class, 'cars_pieces', 'id_cars','id_pieces')
    }

最后:

    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

有什么方法可以检索用户汽车的属性?

感谢您的帮助!

您可以将 function 传递给您的急切加载属性:

return UserModel::with(['cars.pieces.attributes' => function ($query) {
    $query->where('id_user', DB::raw('users.id'))->where('id_car', DB::raw('cars.id'));
}]);

我没有对此进行测试,但我认为它应该可以工作。

记得导入 DB Facade: use Illuminate\Support\Facades\DB;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM