我尝试选择3个相同类型的项目。这就是我的尝试:
public function show(Work $work)
{
$getSameType = Work::whereHas('type', function ($query){
$query->where('name', 'Site web');
})->whereNotIn('id', [$work->id])->get();
}
它可以工作,但我必须手动输入名称。我希望它是动态的。
在我看来,我访问的类型如下:$work->type->name
,或者为了获得slu $work->type->slug
所以我尝试在我的查询中做同样的事情,但我将无限期变为错误。
public function show(Work $work)
{
$getSameType = Work::whereHas('type', function ($query){
$query->where('name', $work->type->slug);
})->whereNotIn('id', [$work->id])->get();
}
你能帮帮我吗?
非常感谢!
答案 0 :(得分:2)
您必须使用use
才能在闭包中使用变量,如:
public function show(Work $work)
{
$getSameType = Work::whereHas('type', function ($query) use ($work) {
$query->where('name', $work->type->slug);
})->whereNotIn('id', [$work->id])->get();
}
PS:我没有在上面测试,但它应该可以工作