2016-05-09 5 views
0

So:Wie wird eine Abfrage als Tabelle in Laravel-Form verknüpft?

SELECT * FROM `teachers` AS t1 
    JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `teachers`)-(SELECT MIN(id) FROM `teachers`))+(SELECT MIN(id) FROM `teachers`)) AS id) AS t2 
    WHERE t1.id >= t2.id 
ORDER BY t1.id LIMIT 20; 
+1

Nicht wirklich sicher, aber ist das eine seltsame langwierige Möglichkeit, Ihre Ergebnisse nach dem Zufallsprinzip zu bestellen? Wenn ja, was ist falsch mit 'Teacher :: orderByRaw ('RAND()') -> nimm (20) -> get();'? Auch wenn ich * richtig * bin und es ist eine Möglichkeit, eine zufällige 20 Zeilen zu bekommen, wird es nicht immer 20 (oder sogar irgendwelche) Zeilen zurückgeben - wenn Sie Lücken in den IDs haben, wird Ihre Funktion, eine zufällige auszuwählen, nicht arbeite zu gut. – alexrussell

+0

@alexrussell danke! – PhilipLee

Antwort

0

können Sie roh mitmachen versuchen.

Teacher::select(
     '*', 

    )->join(
     DB::raw(SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `teachers`)-(SELECT MIN(id) FROM `teachers`))+(SELECT MIN(id) FROM `teachers`)) AS id)) as t2, t1.id >= t2.id 
    ) 
    ->orderBy('t1.id') 
    ->get(); 
+0

Sehr gut. Tks! – PhilipLee

Verwandte Themen