【问题标题】:Laravel Has Many through relationship not workingLaravel 有很多通过关系不起作用
【发布时间】:2019-07-22 09:00:59
【问题描述】:

我是 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

请建议...

【问题讨论】:

    标签: php laravel eloquent has-many-through eloquent-relationship


    【解决方案1】:

    试试下面的代码:

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

    还可以尝试使用其他参数

    更多 Laravel Has-Many-Through Relationship

    【讨论】:

      【解决方案2】:

      好的,试试这个方法

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

      Assets::with('assetmaintenance','assetmaintenance.user')->get()
      

      【讨论】:

        猜你喜欢
        • 2018-11-25
        • 2018-12-09
        • 2019-06-27
        • 2017-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 2014-07-10
        相关资源
        最近更新 更多