Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5将数据库查询从控制器传递到视图_Php_Laravel_Model View Controller_Database Connection_Views - Fatal编程技术网

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

Php Laravel 5将数据库查询从控制器传递到视图,php,laravel,model-view-controller,database-connection,views,Php,Laravel,Model View Controller,Database Connection,Views,一般来说,我不熟悉Laravel5和MVC框架。我无法从数据库查询中获取结果并将其传递到刀片视图。这是我的控制器功能 public function show(Project $project) { $technologies = DB::select('select * from technologies where id = ?', [$project->technology_id]); return view('projects.show', compact('project','t

一般来说,我不熟悉Laravel5和MVC框架。我无法从数据库查询中获取结果并将其传递到刀片视图。这是我的控制器功能

public function show(Project $project)
{
$technologies = DB::select('select * from technologies where id = ?', [$project->technology_id]);
return view('projects.show', compact('project','technologies'));
}
我的观点是

@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
@节(“内容”)
{{$project->name}
@如果(!technologies())
没有技术。
@否则
    @foreach($technologies as$technology)
  • @endforeach
@恩迪夫 @端部

感谢您的帮助

将您的查询改写为

$technologies = DB::table('technologies')->where('id',$project->technology_id)->get();

控制器

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'));
}
查看

这在您的视图中不起作用:
@if(!technologies())

@节(“内容”)
{{$project->name}
@如果($技术)
    @foreach($technologies as$technology)
  • @endforeach
@否则 没有技术

@恩迪夫 @停止

此外,如果您对一种更干净的方法感兴趣,可以使用blade循环浏览数据或显示“无数据”警告,请查看本文,其中使用了blade的@each故障??有什么问题吗?您是否尝试过
returnview::make('projects.show')->with(compact('project'))->with(compact('technologies')?您不需要在查询中调用
->get()
?感谢您的建议,但即使在查看源代码时,我仍然会得到一个完全空白的页面作为响应。感谢您提供的有用建议,但我仍然会得到一个空白页面作为响应。正确的url什么都没有,即使我看了源代码。我会再次检查我的DB种子是否正常工作?也许视图就是问题所在?@Scudder Stevens-您的url路由是如何在routes.php中设置的?另外,您在访问URL后是否检查了错误日志?您也可以从视图中删除所有内容,然后尝试输出hello

,以检查它是否返回了视图?routes.php='Route::model('projects','Project');路线::模型(‘技术’、‘技术’);Route::bind('projects',function($value,$Route){return App\Project::whereSlug($value)->first();});路由::资源('projects','ProjectsController');'当我从控制器中删除$technologies=DB调用并从视图中删除for-each循环时,留下“return view('projects.show',compact('project','technologies');{{$project->name}我确实得到了项目名称。当我将DB回调添加到控制器时,它会再次返回一个空白页。我将检查它。我有时会犯错误,当我犯错误时,它们通常很长……)再次感谢Hanks的建议,但我仍然得到了一个完全空白的页面,即使是在查看源代码时。
@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