sql >> データベース >  >> RDS >> Mysql

LaravelでSQLステートメントを実装するにはどうすればよいですか?

    これは、DB::statementを使用して解決できます。 、DB:raw およびDB::select

    コードは私のLaravel5.0テスト環境でテストされており、完全に機能します。

    mysqlステートメントもテストされ、MySQLコンソールで完全に機能します。

    コードは次のとおりです:

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

    結果を表示

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

    覚えておいてください 追加するuse DB; 名前空間の後:

    <?php
    
    namespace App\Http\Controllers;
    
    use DB;
    

    すべての結果出力を示すためだけに結果コードを表示するようにしましたが、コード内のデータを操作する方法はあなた次第です。

    テスト結果

    MySQLコンソールでのmysqlステートメントのランダムな結果

    Laravelでのmysqlステートメントのランダムな結果

    注:

    1-私はあなたのためにこの質問を自分で解決しましたが、私は小さな問題に直面し、LaracastフォーラムのKryptonit3から入力を得ました。

    2-この質問に対する他の解決策を見つけるか、さまざまな方法で解決できる可能性がありますが、私はこの方法で解決することを選択しました。

    注1の完全な質問と回答は、ここ にあります。 。




    1. WindowsフォームからMySQLに接続するにはどうすればよいですか?

    2. MySQL列のサブ文字列の出現をカウントします

    3. SQL Server 2008 データベース内のすべてのテーブルの名前を取得するためのクエリ

    4. 2つの停車地名の間のすべての出発時刻と到着時刻を一覧表示するGTFSクエリ