Получить данные из базы данных и перейти к просмотру

В контроллере я пытаюсь получить данные из таблицы, а затем передать их представлению.

//controller
public function view($id)
{
    $contact = Contact::where('id', $id);

    return view('contact.edit', ['contact' => $contact]);
}

//view
@foreach($contact as $key=>$value)
    {{ $value }}
@endforeach

Но у меня просто пустая страница, и если я попытаюсь повторить значение с помощью {{ $contact->first_name}}, я просто получаю ошибку Undefined property: Illuminate\Database\Eloquent\Builder::$first_name.
Я тоже пробовал использовать метод поиска, но получил тот же результат. Схема таблицы:

CREATE TABLE `contacts` (
  `id` int(11) NOT NULL,
  `first_name` varchar(25) NOT NULL,
  `last_name` varchar(25) NOT NULL,
  `email` varchar(35) NOT NULL,
  `home_phone` int(10) DEFAULT NULL,
  `work_phone` int(10) DEFAULT NULL,
  `cell_phone` int(10) DEFAULT NULL,
  `best_phone` enum('home_phone','work_phone','cell_phone') NOT NULL,
  `address_1` varchar(100) DEFAULT NULL,
  `address_2` varchar(100) DEFAULT NULL,
  `city` varchar(35) DEFAULT NULL,
  `state` varchar(35) DEFAULT NULL,
  `zip` int(6) DEFAULT NULL,
  `country` varchar(35) DEFAULT NULL,
  `birth_date` date DEFAULT NULL,
  `manager` int(11) UNSIGNED NOT NULL
);

Контакт :: найти -> где (['id' => $ id]);

Sfili_81 13.11.2018 15:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Обновлено: Возможно, вы не используете ->first(); после запроса.

Не совсем уверен, почему это не сработает, вы можете попробовать следующее:

public function view($id)
{
    $contact = Contact::find($id);

    return view('contact.edit')->with('contact', $contact);
}

Затем, на ваш взгляд, вы можете получить доступ ко всем свойствам следующим образом:

{{$contact->id}}
{{$contact->first_name}}
//etc

Имейте в виду, что get() не вернет модель, он вернет коллекцию моделей.

Devon 13.11.2018 16:02

@Devon, да, вот почему я предложил find, потому что он получал только один, по ID. Просто хотел объяснить, почему изначально запрос не удался.

rpm192 13.11.2018 16:05

Верно, но first () был бы сопоставимым методом find (), а не get. Найти просто выполняет where('primary key', $id)->first().

Devon 13.11.2018 16:06

Да, в самом деле. Отредактировано!

rpm192 13.11.2018 16:07

Contact::where('id', $id) только подготавливает запрос с помощью построителя запросов. Вы еще не выполнили запрос и не получили никаких результатов.

Contact::where('id', $id)->first() выполнит запрос и получит первый результат, хотя, поскольку id, скорее всего, является первичным ключом, Contact::find($id) является более быстрым способом получить первый результат, соответствующий этому идентификатору.

Другие вопросы по теме