В контроллере я пытаюсь получить данные из таблицы, а затем передать их представлению.
//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
);






Обновлено: Возможно, вы не используете ->first(); после запроса.
Не совсем уверен, почему это не сработает, вы можете попробовать следующее:
public function view($id)
{
$contact = Contact::find($id);
return view('contact.edit')->with('contact', $contact);
}
Затем, на ваш взгляд, вы можете получить доступ ко всем свойствам следующим образом:
{{$contact->id}}
{{$contact->first_name}}
//etc
Имейте в виду, что get() не вернет модель, он вернет коллекцию моделей.
@Devon, да, вот почему я предложил find, потому что он получал только один, по ID. Просто хотел объяснить, почему изначально запрос не удался.
Верно, но first () был бы сопоставимым методом find (), а не get. Найти просто выполняет where('primary key', $id)->first().
Да, в самом деле. Отредактировано!
Contact::where('id', $id) только подготавливает запрос с помощью построителя запросов. Вы еще не выполнили запрос и не получили никаких результатов.
Contact::where('id', $id)->first() выполнит запрос и получит первый результат, хотя, поскольку id, скорее всего, является первичным ключом, Contact::find($id) является более быстрым способом получить первый результат, соответствующий этому идентификатору.
Контакт :: найти -> где (['id' => $ id]);