Использование областей в методе Load не работает - PullRequest
0 голосов
/ 13 июня 2018

Есть ли способ абстрагировать это Замыкание к моей модели MerchantUser аналогично использованию областей действия на with()?

Пока у меня есть это, которое работает:

$merchant_user->load(['permissions' => function ($query) use ($merchantId) {
    if ($merchantId) {
        $query->where('merchant_user_permission.merchant_id','=', $merchantId);
    }
}]);

Но я бы хотел сделать что-то вроде этого:

$merchant_user->loadPermissions($merchantId);

В моей модели:

public function scopeLoadPermissions($query, $merchantId = null)
{
    return $query->load(['permissions' => function ($q) use ($merchantId) {
        if ($merchantId) {
            $q->where('merchant_user_permission.merchant_id','=', $merchantId);
        }
    }]);
}

, которая в данный момент просто возвращает ошибку:

"Метод Illuminate \ Database \ Query \ Builder :: load не существует."

1 Ответ

0 голосов
/ 13 июня 2018

В этом случае вам не нужно добавлять область действия.Вместо этого, если вы можете добавить эту функцию в вашу модель

public function loadPermissions($merchantId = null)
{
    return $this->load(['permissions' => function ($q) use ($merchantId) {
        if ($merchantId) {
            $q->where('merchant_user_permission.merchant_id','=', $merchantId);
        }
    }]);
}

и использование

$merchant_user->loadPermissions($merchantId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...