0

我是 laravel 的新手,我正面临人际关系问题。我有三张桌子。

资产资产维护用户
身份证身份证身份证
名称asset_id 名称
                 检查员 ID(用户 ID)
                 姓名

我想通过 访问所有与资产相关的用户assetmaintenance,所以我在资产模型中定义了如下关系:

    公共功能用户(){

        return $this->hasManyThrough(TenantUser::class,AssetMaintenance::class,'asset_id','id');
    }

但是 eloquent 生成的查询和我预想的不一样:

select * from `assets` where exists (select * from `users` inner join `assets_maintenance` on `assets_maintenance`.`id` = `users`.`id` where `assets`.`id` = `assets_maintenance`.` assets_id` 和 `username` 像 ?) 和 `isDeleted` = ? 按 `id` desc 排序

我想要关系,assets_maintenance.inspector_id= users.id但它正在比较assets_maintenance.id = user.id

请建议...

4

2 回答 2

1

试试下面的代码:

public function users(){
    return $this->hasManyThrough(TenantUser::class, AssetMaintenance::class, 'inspector_id', 'id');
}

并尝试使用其他参数

更多 Laravel 的多通关系

于 2019-02-28T12:40:34.990 回答
0

好的 试试这个方法

首先,在资产模型中为 hasMany 资产维护创建一个方法,然后在模型中为 hasOne inspector_id 创建另一个方法,并在一个查询中获取所有这些数据,使用下面的代码。

Assets::with('assetmaintenance','assetmaintenance.user')->get()
于 2019-02-28T12:41:20.697 回答