如何在laravel视图中传递函数?

时间:2019-03-08 11:29:48

标签: laravel-5

我有一个具有培训师功能的以下课程模型,我试图将其传递给视图,以便可以看到该课程的培训师。

这是我的模型函数

public function trainers()
{
    return $this->belongsToMany(User::class, 'course_user');
}

这是我试图通过“模型课程”和功能培训师的观点。

<h6 class="card-subtitle text-muted">Trainer: {{$course->trainers()}}</h6>

这是我得到的错误:

htmlspecialchars() expects parameter 1 to be string, object given (View: /Applications/MAMP/htdocs/hs-03/re来源/视图/管理员/课程/showCourse.blade.php)

这是我的控制人:

    public function show($id)
    {
      $created_bies = \App\User::get()->pluck('name', 'id')->prepend(trans('global.app_please_select'), '');
    $trainers = \App\User::get()->pluck('name', 'id');
    $tests = \App\Test::where('course_id', $id)->get();$lessons = \App\Lesson::where('course_id', $id)->get();
    // $date = Carbon::now();
    $date = Carbon::now()->addDays(30)->toFormattedDateString();
    $user = User::find(1);
    $user->name;

    $course = Course::findOrFail($id);

    return view('admin.courses.showCourse', compact('course', 'tests', 'lessons', 'date', 'user'));
}

1 个答案:

答案 0 :(得分:1)

这是由于trainers方法未返回字符串的事实。像模型中定义的方法一样,应该返回一个Illuminate/Database/Eloquent/Relations/BelongsToMany对象,就像您看到的here一样。该错误是因为您试图直接在模板中将该对象显示为String,这是不可能的。我想你想展示一些像培训师这样的东西。可以得到

<h6 class="card-subtitle text-muted">Trainer: {{$course->trainers()->count()}}</h6>

之所以可行是因为count方法返回一个整数,而不是像trainers这样的对象。

另一方面,如果您要坚持这种用法,则必须在视图中插入一个循环,该循环将遍历培训师的集合,通过调用$course->trainers()

返回
@foreach($course->trainers() as $trainer)
    <h6 class="card-subtitle text-muted">Trainer: {{$trainer->name }}</h6>
@endforeach