Laravel HasMany通过不工作

问题描述 投票:0回答:1

我希望获得特定商家的所有商家用户。这是我的设置;

merchant
- id

merchant_user_permission
- merchant_id (equal to merchant.id)
- user_id (equal to merchant_user.id)

merchant_user
- id

在我的代码中,我尝试过:

class Merchant extends Model
{
    public function merchant_users()
    {
        return $this->hasManyThrough(MerchantUser::class, MerchantUserPermission::class, 'user_id');
    }
}

但是生成的sql无效。

string(374)“SQLSTATE [42S22]:未找到列:1054'on clause'中的未知列'merchant_user.merchant_user_permission_id'(SQL:选择count(*)作为来自merchant_user内部连接的聚合merchant_user_permission merchant_user_permission.id = merchant_user.merchant_user_permission_id其中merchant_user_permission.user_id = 123-3456-7789-qwerty)“

这是一个有效的SQL示例:

SELECT mu.`id`, mu.`email`
FROM `merchant` m
LEFT JOIN `merchant_user_permission` mup ON m.id = mup.merchant_id
LEFT JOIN `merchant_user` mu ON mu.id = mup.user_id
WHERE mup.`merchant_id` = '123-3456-7789-qwerty'

如何使用Eloquent 5.4复制它?

php laravel eloquent
1个回答
3
投票

试试这个

建立多对多的关系

class Merchant extends Model
{
    public function merchant_users()
    {
        return $this->belongsToMany('App\ MerchantUser', 'merchant_user_permission', 'merchant_id', 'merchant_user_id');
    }
}

然后

$permissions = App\Merchant::find($merchant_id)->merchant_users()->get();
© www.soinside.com 2019 - 2024. All rights reserved.