Laravel HasMany通过不工作

时间:2018-02-28 19:29:34

标签: php laravel eloquent

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

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未知列' merchant_user.merchant_user_permission_id'在' on条款' (SQL:选择count(*)作为merchant_usermerchant_user_permission内部联接merchant_user_permission的汇总。id = merchant_usermerchant_user_permission_id其中{{ 1}}。merchant_user_permission = 123-3456-7789-qwerty)"

这是一个有效的SQL示例:

user_id

如何使用Eloquent 5.4复制它?

1 个答案:

答案 0 :(得分: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();