Reputation: 33
I'm new to Laravel 5 and MVC frameworks in general. I having trouble getting results from a database query and passing it to my blade view. Here is what I have for a controller function ...
public function show(Project $project)
{
$technologies = DB::select('select * from technologies where id = ?', [$project->technology_id]);
return view('projects.show', compact('project','technologies'));
}
and my view is ...
@section('content')
<h2>{{ $project->name }}</h2>
@if ( !technologies() )
no technologies.
@else
<ul>
@foreach( $technologies as $technology )
<li><a href="#">{{ $technology->slug }}</a></li>
@endforeach
</ul>
@endif
@endsection
Thanks for your help
Upvotes: 2
Views: 11492
Reputation: 12358
controller
public function show(Project $project)
{
$technologies = DB::table('technologies')
->select('*')
->where('id', $project->technology_id)
->get(); // you were missing the get method
return view('projects.show', compact('project', 'technologies'));
}
View
This will not work in your view: @if ( !technologies() )
@section('content')
<h2>{{ $project->name }}</h2>
@if($technologies)
<ul>
@foreach($technologies as $technology)
<li><a href="#">{{ $technology->slug }}</a></li>
@endforeach
</ul>
@else
<p>no technologies.</p>
@endif
@stop
Also, if you're interested in a cleaner way to loop through your data or show a 'no data' warning using blade check out this article which uses blade's @each https://laravel-news.com/2014/09/laravel-blade/
Upvotes: 3
Reputation: 21535
rewrite your query as,
$technologies = DB::table('technologies')->where('id',$project->technology_id)->get();
Upvotes: 0