Reputation: 753
In controller I am trying to get data from table, and then pass it to the view.
//controller
public function view($id)
{
$contact = Contact::where('id', $id);
return view('contact.edit', ['contact' => $contact]);
}
//view
@foreach($contact as $key=>$value)
{{ $value }}
@endforeach
But I get just empty page, and if I try to echo value with {{ $contact->first_name}}
i just receive error Undefined property: Illuminate\Database\Eloquent\Builder::$first_name
.
I also tried to use find method, but got the same result.
Table schema:
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
);
Upvotes: 1
Views: 299
Reputation: 2454
EDIT: Might be because you're not using ->first();
after the query.
Not really sure why that wouldn't work, you can try this instead:
public function view($id)
{
$contact = Contact::find($id);
return view('contact.edit')->with('contact', $contact);
}
Then in your view you can access all properties like so:
{{$contact->id}}
{{$contact->first_name}}
//etc
Upvotes: 3
Reputation: 35337
Contact::where('id', $id)
only prepares a query with the query builder. You haven't yet executed the query or retrieved any results.
Contact::where('id', $id)->first()
will execute the query and retrieve the first result, although since id
is likely the primary key, Contact::find($id)
is a quicker way to get the first result matching that id.
Upvotes: 4