Расщепление запроса laravel возвращает огромный нечетный результат - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть этот запрос в Laravel (5.3):

$menu_categories = DB::table('categories')->get();

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

$menu_categories = DB::table('categories');
$menu_categories->get();

Возвращает огромную коллекцию, которая начинается так:

Illuminate\Database\Query\Builder Object
(
    [connection:protected] => Illuminate\Database\MySqlConnection Object
        (
            [pdo:protected] => PDO Object
                (
                )

            [readPdo:protected] => 
            [reconnector:protected] => Closure Object
                (
                    [this] => Illuminate\Database\DatabaseManager Object...

Что здесь происходит? Я искал некоторое время и не могу ничего найти по этому поводу - хотя, признаюсь, я не уверен, что искать. Обратите внимание, что я НЕ добавляю никаких дополнительных параметров, когда у него есть странная возвращаемая коллекция - я видел странный возврат изначально с дополнительными параметрами (orderBy и whereIn), но даже после удаления тех он по-прежнему возвращает эту странность.

1 Ответ

0 голосов
/ 15 сентября 2018
  1. Строка «non split» создает объект запроса для таблицы категорий, вызывает get () для объекта запроса и присваивает результаты get () переменной $ menu_categories.

  2. В разделенной версии первая строка создает объект запроса для таблицы категорий и задает его в переменной $ menu_categories.

    Во второй строке вызов get () для $ menu_categories фактически не изменяет переменную.Вместо этого он возвращает коллекцию, которую вы ищете, но она ни к чему не привязана.Вот почему вы просто видите этот массивный объект, когда вы его выбрасываете.

Правильная двухстрочная версия будет выглядеть примерно так:

$query_object = DB:table('categories');
$menu_categories = $query_object->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...