无法从控制器laravel访问视图中的变量

时间:2018-07-19 13:52:22

标签: php html laravel routes views

我无法在函数show()中访问$ prospectus,但在laravel版本5.6.27中的函数store()中运行良好

public function store(Request $request) {

    $course = Course::create([
        'name' => $request['name'],
        'title' => $request['title'],
        'division_id' => $request['division_id'],
    ]);

    $prospectus = Prospectus::create([
        'years' => $request['years'],
        'name' => $course->name,
        'user_id' => null,
        'course_id' => $course->id,
    ]); 

    return view('courses.show', compact('course', 'prospectus'));
}

public function show(Course $course) {
    $prospectus = Prospectus::where('course_id', $course->id)->get();

    //return $prospectus;
    return view('courses.show', compact('course', 'prospectus'));
}

当我使用return $prospectus;而不是return view('courses.show', compact('course', 'prospectus'));时传递数据

这是我的路线

Route::resource('courses', 'CourseController');

Route::post('courses', 'CourseController@store')->name('courses.store');

Route::get('courses/{course}', 'CourseController@show')->name('courses.show');

2 个答案:

答案 0 :(得分:1)

我想您想要一个Prospectus对象,get()将为您提供collection个对象。

使用first()函数仅将数据库中的第一个匹配项作为单个对象。

$prospectus = Prospectus::where('course_id', $course->id)->first();

答案 1 :(得分:0)

确认$ prospectus查询不返回NULL,请尝试以下操作:

$ prospectus = Prospectus :: where('course_id',$ course-> id)-> first();