如何为每个类别

时间:2017-05-14 13:49:57

标签: php sql laravel

我尝试制作一个" getThreeWorks" Laravel的方法。每个视图发布到其“方向”#39;它存储在同一个表中。例如,"工作1具有Web方向,工作2具有2D方向,工作3具有3D方向"。

在每篇文章的最后,我想提出一个链接到其他3个作品(以随机顺序)。

所以我希望链接到一个包含" web"方向,另一个有" 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();
}

3 个答案:

答案 0 :(得分:0)

你不能删除限制(1)而是按方向使用组吗?然后你会得到其中一个。

答案 1 :(得分:0)

您可以使用当前代码创建新集合。

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

答案 2 :(得分: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();