2017-05-14 75 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();