【问题标题】:Laravel relationship filter by company_idLaravel 关系过滤器按 company_id
【发布时间】:2021-12-15 09:09:25
【问题描述】:

我正在做一个具有自定义权限功能的 laravel api。 这是我的表格结构:

User
id | email | password

Company
id | companyName

Permissions
id | name

User_has_permissions
user_id | company_id | permission_id

我在模型中使用以下代码获取用户和权限:

public function permissions() {
    return $this->belongsToMany(Permission::class, 'user_has_permission', 'user_id', 'permission_id');
}

在控制器中:

public function show($company_id, $user_id) {
    //now I need return only permissions related with $company_id
    return User::with(['permissions'])->find($User_id);
}

现在,我需要获取用户和您的权限,但仅与 company_id 相关。

有人知道我怎样才能得到这个结果吗?

欢迎提出任何想法。

非常感谢。

【问题讨论】:

    标签: laravel api relationship


    【解决方案1】:

    您可以通过将键值语法作为参数进行查询。在BelongsToMany 中,它与数据透视表进行内部连接,这样就可以在comapny_id 上添加条件。

    return User::with(['permissions' => function ($query) use ($company) { 
        $query->where('user_has_permission.company_id', $company->id);
    }])->find($id);
    

    【讨论】:

    • 未测试,所以测试一下看看是否有帮助:)
    猜你喜欢
    • 2016-10-15
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2021-06-12
    • 2018-12-14
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多