2017-12-17 1 views
-3

pls helfen, wie richtig diese SQL zu machen, kann nicht richtig machen, mit zwei Auswahl und RANDSQL-Abfrage zu Laravel Abfrage mit Unterabfrage

SELECT * FROM (SELECT * FROM `galleries` 
       WHERE domain_id = 13 AND is_deleted = 0 
       ORDER BY galleries.id DESC LIMIT 30) q 
ORDER BY RAND() 

dieses

$galleries = DB::table('galleries')->select(DB::raw('galleries.*')) 
      ->where('domain_id', 13) 
      ->where('is_deleted', 0) ... 
+0

Haben Sie nicht versucht, aber das könnte Ihnen helfen, http://www.midnightcowboycoder.com – Camilo

Antwort

0
mögen

Sie Ihre Abfrage neu schreiben können als

SELECT * FROM `galleries` 
WHERE domain_id = 13 
AND is_deleted = 0 
ORDER BY id DESC,RAND() 
LIMIT 30 

Und in Laravel so etwas wie

$galleries = DB::table('galleries') 
      ->select(DB::raw('galleries.*')) 
      ->where('domain_id', 13) 
      ->where('is_deleted', 0) 
      ->orderBy('id', 'desc') 
      ->orderByRaw('RAND()') 

Oder Ihre Ergebnisse von oben Abfrage erhalten, ohne ->orderByRaw('RAND()') Anwendung und do shuffle()

$galleries = $galleries->toArray(); 
shuffle($galleries); 
+0

Enthält diese inRandomOrder() arbeiten? –

+0

@ARUNMadathil ich nicht sicher 'inRandomOrder sagen kann()' wird –

+0

arbeiten diese Abfrage nicht funktionieren SELECT * FROM 'galleries' WHERE domain_id = 13 UND is_deleted = 0 ORDER BY id DESC, RAND() LIMIT 30 Ich versuchte in mysql, RAND funktioniert nicht und in Laravel funktioniert auch nicht ... p. s. Laravel Version 5.1 – AlexTMZ