2014-11-28 7 views
0

Я не мог найти ответы на это, поэтому я решил спросить. Надеюсь, я не разместил дубликат.Laravel Eloquent find vs all toArray

Я пишу простую консольную команду для поиска задач в базе данных в Laravel 5. Пользователь может запускать найденные задачи или отображать их на консоли. Поэтому у меня есть/консоль/Команда и runOrDisplay метод, как это класс RunScheduledTasksCommand в приложении:

 $tasks = $this->tasks->toArray(); 

     if ($taskId) 
     { 
      $tasks = array($this->tasks->toArray()); 
     } 

     $this->table($headers, $tasks); 

Так вот, $ this-> задачи моей Eloquent модель возвращается либо Task :: найти ($ TaskId) или задачи :: all(), и я хочу отображать эти задачи в таблице на консоли.

Теперь задача :: find ($ taskId) -> toArray() создаст одномерный массив, но Task :: all() -> toArray() будет выполнять многомерный массив. Мой код работает нормально, мне просто интересно, есть ли лучший способ сделать это. Есть ли что-то уже встроенное в Laravel 5, которое даст мне многомерный массив в обоих случаях?

ответ

0

Вместо Task::find($taskId), используйте:

Task::whereId($taskId)->get(); 

Это будет гарантировать, что вы всегда имеете дело с Collection объекта, независимо от того, сколько моделей у вас есть.

+0

Ничего себе, здорово! Благодаря! Так просто ... это должен быть Laravel;) –

Смежные вопросы