2017-06-02 85 views
0

我嘗試選擇3個相同類型的項目。這是我的嘗試:如何選擇項目類型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,或有塞$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

我不知道這一點,但我相信你應該這樣做,$ query-> where('name',$ work-> type-> name); OR $ query-> where('slug',$ work-> type-> slug); –

回答

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

+0

很有意思,謝謝! – Jeremy