sql >> Database >  >> RDS >> Mysql

Hoe implementeer ik mijn SQL-instructie in Laravel?

U kunt dit oplossen door DB::statement . te gebruiken , DB:raw en DB::select .

De code is getest op mijn Laravel 5.0 testomgeving en het werkt perfect.

Je mysql-statement is ook getest, het werkt perfect op de MySQL-console.

Hier is de 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;
        ")
    );

Resultaten bekijken

echo "utilizador_id | nome <br />";

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

Onthoud om use DB; na de naamruimte:

<?php

namespace App\Http\Controllers;

use DB;

Ik heb alleen resultatencode weergeven gemaakt om alle resultaten te demonstreren, maar het is aan jou hoe je de gegevens in je code manipuleert.

Testresultaten

Willekeurige resultaten van uw mysql-instructie in de MySQL-console

Willekeurige resultaten van uw mysql-statement in Laravel

Opmerking:

1- Ik heb deze vraag zelf voor je opgelost, maar ik had een klein probleempje en ik kreeg input van Kryptonit3 op het Laracast-forum.

2- Misschien vindt u andere oplossingen voor deze vraag of het kan op verschillende manieren worden opgelost, maar ik heb ervoor gekozen om op deze manier op te lossen.

De volledige vraag en het antwoord in Note 1 vindt u hier .




  1. voeg dagen en uren toe in het datum/tijd-veld en verkrijg de bijgewerkte datum/tijd in php met mysql

  2. SQL-query op datum wanneer type VARCHAR is

  3. PHP.ini bijwerken op een door GoDaddy gehoste site

  4. Geen gegevens meer om uit socketfout te lezen