题
我有3个表ppc_offers,survery_offers,find_offers(从管理部分,我输入这些表的数据)
现在在前端,我想展示来自这些表的最新3优惠。
i.e。最新3将来,它们可以来自单张桌子或多个表......它只是有条件“最新3”
如何这样做?
Laravel提供了任何方法来做这个?
或者我需要有任何主表?
或者你可以为此建议我定期sql查询吗?
请帮忙。 谢谢。
ppc表:
-------------------------
id | integer
title | varchar
url | varchar
description | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
.
调查表:
-------------------------
id | integer
title | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
.
查找代码表:
-------------------------
id | integer
title | varchar
url | varchar
description | varchar
code | varchar
created_at | timestamp
updated_at | timestamp
--------------------------
. 解决方案
作为一个推荐,在一个表中包含所有3个提供的所有3个,它可能会更有意义,并使用“优惠”ID彼此区分,而不是使用3个不同的表。它可能简化代码。
我相信这可以使用您当前的设置:
$ppc = DB::table('ppc_offers')
->select('title', 'url', 'description', 'NULL as code', 'updated_at');
$survey = DB::table('survey_offers')
->select('title', 'NULL as url', 'NULL as description', 'NULL as code', 'updated_at');
$find = DB::table('find_offers')
->select('title', 'url', 'description', 'code', 'updated_at');
return $ppc->unionAll($survey)->unionAll($find)
->orderBy('updated_at', 'desc')
->take(3)
->get();
. 其他提示
使3个查询将它们与列的相同名称
select * from
(
(query1 order by id desc limit 3) x
union
(query2 order by id desc limit 3) y
union
(query3 order by id desc limit 3) z
.
(
不隶属于 StackOverflow