Pergunta

Eu tenho 3 mesas ppc_offers, survery_offers,find_offers ( a partir da seção de administração, eu entro de dados nessas tabelas)

Agora no front end, quero mostrar mais recente 3 oferece a partir destas tabelas.

i.e.3 últimos virão, eles podem ser a partir de uma única tabela ou de várias tabelas...ele só tem condição de "últimas 3"

Como posso fazer isso?

Laravel fornece alguma forma de fazer isso?

ou eu preciso de ter qualquer mestre de mesa?

ou você pode me sugerir regulares de consulta SQL para isso?

Por favor, ajuda.Obrigado.

PPC Tabela:

-------------------------
id            |  integer
title         |  varchar
url           |  varchar
description   |  varchar
created_at    |  timestamp
updated_at    |  timestamp
--------------------------

Tabela de medição:

-------------------------
id            |  integer
title         |  varchar
created_at    |  timestamp
updated_at    |  timestamp
--------------------------

encontrar a Tabela de código:

-------------------------
id            |  integer
title         |  varchar
url           |  varchar
description   |  varchar
code          |  varchar
created_at    |  timestamp
updated_at    |  timestamp
--------------------------
Foi útil?

Solução

Como recomendação, pode fazer mais sentido para incluir todos os 3 destas ofertas em um só quadro, e usar um "offer_type" de identificação para diferenciá-los uns dos outros, em vez de usar 3 tabelas diferentes.Ele pode simplificar o código.

Eu acredito que isso pode funcionar com a sua configuração atual:

$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();

Outras dicas

Fazer 3 consultas de união-los com os mesmos nomes de colunas

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

(

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top