如何选择项目类型的3项

时间:2017-06-02 14:01:15

标签: php laravel

我尝试选择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();   
}
你能帮帮我吗?

非常感谢!

1 个答案:

答案 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:我没有在上面测试,但它应该可以工作

更多信息:http://php.net/manual/en/functions.anonymous.php