Я слежу за видео Laracasts: Basic Model / Controller / View Workflow .
У меня есть таблица с контактной информацией.
CREATE TABLE `about` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Я пытаюсь передать данные для просмотра, используя следующий код в файле контроллера:
public function index()
{
$about = Page::where('page', 'about-me')->get(); //id = 3
return view('about', compact('about'));
}
Когда я пытаюсь показать код, как показано ниже,
@section('title')
{{$about->title}}
@stop
@section('content')
{!! $about->content !!}
@stop
Я получаю сообщение об ошибке:
Свойство [название] не существует в этом экземпляре коллекции. (Вид: E: \ laragon \ www \ newsite \ resources \ views \ about.blade.php)
Но если я изменю метод получения в файле контроллера, он заработает.
public function index()
{
$about = Page::find(3);
return view('about', compact('about'));
}
Когда я использую dd($about)
в первом случае ( where()->get()
), данные инкапсулируются в массив. Во втором случае ( find(3)
) он отображает данные, как и ожидалось.
Что я делаю не так?
источник
С помощью
get()
метода вы получаете коллекцию (все данные, соответствующие запросу), попробуйте использоватьfirst()
вместо этого, он возвращает только один элемент, например:$about = Page::where('page', 'about-me')->first();
источник
$about = DB::where('page', 'about-me')->first();
вместо
get()
.Это работает над моим проектом . Спасибо.
источник
Вы должны использовать ключевое слово Collection в контроллере. Как здесь..
public function ApiView(){ return User::collection(Profile::all()); }
Здесь Пользователь - это имя ресурса, а профиль - это имя модели. Спасибо.
источник
Человек может получить это при работе с заводскими функциями, поэтому я могу подтвердить, что это действительный синтаксис:
$user = factory(User::class, 1)->create()->first();
Вы можете увидеть ошибку экземпляра коллекции, если сделаете что-то вроде:
$user = factory(User::class, 1)->create()->id;
так что измените его на:
$user = factory(User::class, 1)->create()->first()->id;
источник
$about->first()->id
или$stm->first()->title
и ваша проблема решена.источник