Я пытаюсь узнать Laravel, и мне было очень приятно, пока я не упал!Laravel5 Красноречивый метод Все возвращающие неожиданные результаты
Я создал таблицу под названием suggestions
и засеял ее некоторыми поддельными данными.
Это выглядит следующим образом:
У меня есть файл модели под названием Suggestion.php
, который имеет следующий код:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Suggestion extends Model
{
//
}
В моем routes.php
файле у меня есть это:
use App\Suggestion;
Route::get('/', function() {
$suggestions = Suggestion::all();
return '<pre>' . var_dump($suggestions) . '</pre>';
});
Я ожидаю получить массив записей в моей базе данных, но вместо этого я получаю объект Illuminate\Database\Eloquent\Collection
, который имеет два массива: массив macros
и массив items
. Начало var_dump
выглядит следующим образом:
данных Я хочу, чтобы получить доступ на самом деле, как представляется, в attributes
массиве, но это не кажется, что это как Laravel должен работать.
Это действительно смущает меня, поскольку я пытаюсь следовать ряду учебников (like this one), и кажется, что я должен получить простую коллекцию, которую я могу перебрать.
Я сделал некоторые исследования по этой проблеме, и я нашел другие сообщения переполнения стека, такие как this one, но на самом деле это не касается моего вопроса.
Я как бы понял, что я каким-то образом испортил мою модель предложений или не сделал это правильно, но помимо этого я потерялся.
Заранее благодарим за любые рекомендации, которые вы можете дать мне. Я на самом деле намерен использовать контроллер и представление, но для простоты представления моей проблемы здесь я помещаю нужный код в файл маршрутов.
Вы должны получить коллекцию и перебирать его. Пожалуйста, покажите нам, как вы это делаете в данный момент. – user2094178
Как уже было сказано, просто предварите его как обычный массив, сборники итерабельны. Модели хранят свои свойства в массиве 'protected $ attributes'. К этим свойствам относятся магические геттеры и сеттеры. TLDR: он работает правильно. – jardis
И если вы действительно хотите получить массив, вы можете вызвать метод 'all()' в Collection, –