Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich meine SQL-Anweisung in Laravel implementieren?

Sie können dies lösen, indem Sie DB::statement verwenden , DB:raw und DB::select .

Der Code wurde auf meiner Laravel 5.0-Testumgebung getestet und funktioniert perfekt.

Ihre MySQL-Anweisung wurde ebenfalls getestet und funktioniert perfekt auf der MySQL-Konsole.

Hier ist der Code:

DB::statement(DB::raw('SET @prev=0,@rownum=0'));

$results =
    DB::select(
        DB::raw("
          SELECT utilizador_id, nome
          FROM (
            SELECT *,
                 IF( @prev <> utilizador_id,
                     @rownum := 1,
                     @rownum := @rownum+1
                 ) AS rank,
                 @prev := utilizador_id,
                 @rownum
            FROM (
              SELECT * FROM `anuncios`
              ORDER BY utilizador_id, rand()
            ) AS random_ads
          ) AS ads_ranked
          WHERE rank <= 2;
        ")
    );

Ergebnisse anzeigen

echo "utilizador_id | nome <br />";

foreach ($results as $result)
{
    echo $result->utilizador_id . "__________| " . $result->nome . "<br />";
}

Denken Sie daran um use DB; hinzuzufügen nach dem Namensraum:

<?php

namespace App\Http\Controllers;

use DB;

Ich habe View results Code nur erstellt, um die gesamte Ergebnisausgabe zu demonstrieren, aber es liegt an Ihnen, wie Sie die Daten in Ihrem Code manipulieren.

Testergebnisse

Zufällige Ergebnisse Ihrer MySQL-Anweisung in der MySQL-Konsole

Zufällige Ergebnisse Ihrer MySQL-Anweisung in Laravel

Hinweis:

1- Ich habe diese Frage selbst für Sie gelöst, aber ich hatte ein kleines Problem und ich erhielt Input von Kryptonit3 im Laracast-Forum.

2- Möglicherweise finden Sie andere Lösungen für diese Frage oder sie kann auf andere Weise gelöst werden, aber ich habe mich für diese Lösung entschieden.

Die vollständige Frage und Antwort in Anmerkung 1 finden Sie hier .