Question

J'ai 3 tables PPC_Offers, Survery_Offers, Find_Offers (à partir de la section Admin, je saisis des données dans ces tables)

Maintenant sur le devant, je souhaite afficher les 3 dernières offres de ces tables.

I.e.Les plus tard 3 viendront, ils peuvent provenir d'une table unique ou de plusieurs tables ... il suffit de conserver "Dernières 3"

Comment puis-je faire cela?

Laravel fournit un moyen de faire cela?

ou dois-je avoir une table principale?

ou pouvez-vous me suggérer une requête SQL régulière pour cela?

S'il vous plaît aider. Merci.

Table PPC:

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

Table d'enquête:

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

Find Tableau de code:

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

Était-ce utile?

La solution

En tant que recommandation, il peut être plus logique d'inclure les 3 de ces offres dans une table et d'utiliser un identifiant "offre_type" pour les distinguer les uns des autres, au lieu d'utiliser 3 tables différentes.Cela pourrait simplifier votre code.

Je crois que cela peut fonctionner avec votre configuration actuelle:

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

Autres conseils

Faites 3 questions les syndicates avec les mêmes noms pour les colonnes

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

(

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top