douping1825 2015-05-31 09:14
浏览 281
已采纳

Laravel 5将数据库查询从控制器传递到视图

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

  • 写回答

2条回答 默认 最新

  • douxin8749 2015-05-31 09:35
    关注

    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/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?