Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zaimplementować moje oświadczenie sql w Laravel?

Możesz to rozwiązać za pomocą DB::statement , DB:raw i DB::select .

Kod jest testowany na moim środowisku testowym Laravel 5.0 i działa idealnie.

Twoja instrukcja mysql jest również testowana, działa idealnie na konsoli MySQL.

Oto kod:

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;
        ")
    );

Wyświetl wyniki

echo "utilizador_id | nome <br />";

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

Pamiętaj dodano use DB; po spacji nazw:

<?php

namespace App\Http\Controllers;

use DB;

Zrobiłem kod Wyświetl wyniki tylko po to, aby zademonstrować wszystkie wyniki, ale to od Ciebie zależy, jak manipulować danymi w kodzie.

Wyniki testu

Losowe wyniki Twojej instrukcji mysql w konsoli MySQL

Losowe wyniki Twojego oświadczenia mysql w Laravel

Uwaga:

1- Ja sam rozwiązałem to pytanie, ale napotkałem mały problem i otrzymałem informacje od Kryptonit3 na forum Laracast.

2- Możesz znaleźć inne rozwiązania tego pytania lub można je rozwiązać na różne sposoby, ale zdecydowałem się rozwiązać w ten sposób.

Pełne pytanie i odpowiedź w uwadze 1 można znaleźć tutaj .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Monitorowanie i zarządzanie operacjami MySQL 8.0 z ClusterControl

  2. Czy kolejność kolumn w instrukcji SELECT wpływa na szybkość zapytań?

  3. GROUP_CONCAT() liczba wierszy podczas grupowania według pola tekstowego

  4. ten sam zalogowany użytkownik przypisał różne identyfikatory sesji (w różnych przeglądarkach)

  5. jak sformatować pole daty w MYSQL