我有一个具有培训师功能的以下课程模型,我试图将其传递给视图,以便可以看到该课程的培训师。
这是我的模型函数
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'));
}
答案 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