Кто-нибудь может объяснить мне этот код Laravel? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть некоторый код, подобный приведенному ниже, я хочу спросить о том же самом // dd($example->count()) #10, почему значение dd() на каждой отдельной строке имеет различное значение? Что меняет мое $example событие, которое я никогда не переназначаю?

$example = $car->wheels()->whereBetween(
        'created_at',
        [
            $starDay->format('Y-m-d h:i:s'),
            $today->format('Y-m-d h:i:s')
        ]
    )

$total =  $example->count();

// dd($example->count()) #10

$totalSuccess = $example->where('status', 'good')->count();

// dd($example->count()) # 5

$colors = $example->select('color', DB::raw('count(*) as total'))
        ->groupBy('color')
        ->get()
        ->toArray();

// dd($example->count()) # []

1 Ответ

3 голосов
/ 07 июня 2019

Значение изменяется, потому что каждый раз, когда вы добавляете все больше и больше различных предложений (например, where) к вашему запросу. Эти вызовы фактически изменяют сам объект запроса, и эти изменения сохраняются.

  1. Сначала у вас есть объект запроса в $example только с предложением whereBetween. Он возвращает вам количество строк в вашей базе данных.
  2. Затем вы добавляете where('status', 'good') к запросу, и это еще больше сужает выбор до 5 строк.
  3. Наконец, вы меняете запрос $example с помощью вызовов select(...) и groupBy().

В конструкторе запросов Laravel объекты видоизменяются при добавлении в него конструкций запроса. Поэтому, когда вы вызываете $example->where(...), ваш $example объект построителя запросов теперь будет иметь это предложение where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...