我希望获得特定商家的所有商家用户。这是我的设置;
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复制它?
试试这个
建立多对多的关系
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();