我有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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top