переменные $ query $ builder? - PullRequest
0 голосов
/ 14 марта 2019

Здравствуйте, iam вроде как новичок в laravel и iam пытается изучить области, но я не могу найти информацию о переменных $ query и $ builder внутри параметров функции. Может кто-нибудь объяснить, почему вам нужно использовать эти переменные, потому что тогда вы вызываете метод области видимости, не передавая никаких параметров.

1 Ответ

0 голосов
/ 14 марта 2019

Переменная $query / $builder позволяет добавлять ограничения к вашему запросу так же, как при использовании модели Eloquent или DB

$query->where('admin', true);

Области в основном позволяютвзять несколько ограничений (где предложения, объединения, наличие и т. д.) и сделать так, чтобы вам оставалось только связать один метод вместо добавления одной и той же логики в нескольких местах.


Пример

Допустим, у вас есть таблица продуктов, и вы хотите проверить, что элемент active и имеет stock.Если вы не используете области действия, у вас будет что-то вроде:

Product::where('active', true)->where('quantity', '>=', 1)->get();

Принимая во внимание, что вы можете сделать область действия под названием available в вашей модели:

public function scopeAvailable($query) 
{
    $query->where('active', true)->where('quantity', '>=', 1);
}

Тогда вы можете простоdo:

Product::available()->get();

Области также могут принимать параметры

Допустим, у нас есть таблица предложений, в которой есть дата available_from и available_to иВы хотите получить все строки, которые были доступны на определенную дату:

Offer::where('available_from', '<=', $date)
    ->where('available_to', '>=', $date)
    ->get();

или мы можем сделать availableOn scope

public function scopeAvailableOn($query) 
{
    $query->where('available_from', '<=', $date)->where('available_to', '>=', $date);
}

, что позволит вам сделать:

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