2017-05-14 104 views
0

我嘗試使用Laravel創建「getThreeWorks」方法。每個視圖發佈到其「定位」。它存儲在同一個表中。例如,「工作1具有網絡方向,工作2具有2D方向,工作3具有3D方向」。如何爲每個類別選擇1個隨機元素

在每篇文章的末尾,我想建議一個鏈接到3個其他作品(以隨機順序)。

因此,我想要一個具有「網絡」方向的工作鏈接,另一個具有「2D」方向,另一個具有「3D」方向。

我根本無法獲取SQL查詢。你可以幫我嗎 ?謝謝 !

public function getThreeWorks() 
{ 
    $workFrom3D = Work::where('orientation', '3D')->inRandomOrder->limit(1)->get(); 
    $workFrom2D = Work::where('orientation', '2D')->inRandomOrder->limit(1)->get(); 
    $workFromWeb = Work::where('orientation', 'web')->inRandomOrder->limit(1)->get(); 
} 
+0

你有沒有嘗試成才? – Sami

+0

是的,我編輯我的問題 – Jeremy

+0

$ workFrom3D = Work :: where('orientation','3D') - > inRandomOrder-> first(); – Scott

回答

0

難道你不能刪除限制(1),而是通過定位使用組?然後你得到每一個。

0

您可以使用當前的代碼創建一個新的集合。

$work = collect([$workFrom3D, $workFrom2D, $workFromWeb]); 
0

如果我明白了,你想在每個帖子的頁腳上顯示一些「帖子」,對不對?你可以試試這個:

public function getThreeWorks() 
{ 
$workFrom3D = Work::where('orientation', '3D')->get(); 
$workFrom2D = Work::where('orientation', '2D')->get(); 
$workFromWeb = Work::where('orientation', 'web')->get(); 


$randomFrom3d = $workFrom3D->random(); 
$workFrom2D = $workFrom2D->random(); 
$workFromWeb = $workFromWeb->random(); 
} 

也,你應該包括一個條件你在哪裏,以避免重複頁面上的相同帖子裏會顯示這個列表,如:

$workFromWeb = Work::where('orientation', 'web') 
       ->where('post_id','!=', $actualPostId)->get();