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

LaravelでBETWEENとANDを使用するにはどうすればよいですか?

    クエリを作成したり、ロジックを含まない純粋なデータを取得したりするだけの場合は、クエリビルダーを使用できます。

    $results = DB::table('search_users')
               ->where('first_name', $firstname)
               ->where('last_name', $last_name)
               ->where('country', $country) //and so on
               ->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))
               ->whereBetween('loc_lat', array(51.47026338272, 51.47026338272))
               ->get();
    

    モデルを使用している場合は、同じ構文を使用できます。

    $users = User::where('key1', $value1)
                 ->where('key2', $value2)
                 ->whereBetween('loc_lng', array(-0.24272918701172, -0.24272918701172))
                 ->whereBetween('loc_lat', array(51.47026338272, 51.47026338272))
                 ->get();
    

    ANDの使用方法に関する質問に関する追加の説明 雄弁に:

    AND 2つ以上のwhere()を使用する場合、デフォルトで使用されます s。だから

    DB::table('search_users')->where('first_name', $firstname)
                             ->where('last_name', $last_name)
    

    等しい

    SELECT * FROM search_users  WHERE first_name = ? AND last_name = ?
    

    ORの場合 orWhere()を使用できます :

    DB::table('search_users')->where('first_name', $firstname)
                             ->orWhere('last_name', $othername)
    

    等しい

    SELECT * FROM search_users  WHERE first_name = ? OR first_name = ?
    

    また、たとえば、より複雑なものが必要になる場合もあります。

    SELECT * FROM search_users  
    WHERE first_name = ? 
      AND (last_name = ? OR last_name = ?)
      AND age > 27
    

    Eloquentでは、これは次のようになります。

    DB::table('search_users')
          ->where('first_name', $firstname)
          ->where(function($query) {
              $query->where('last_name', $lastName1);
              $query->orWhere('last_name', $lastName2);
          })
          ->where('age', '>', 27)
    



    1. Rails:pggemのインストール中にエラーが発生しました

    2. Oracleクエリのエラー単一行のサブクエリが複数の行を返す

    3. 文字列データ、右切り捨て:1406データが列に対して長すぎます

    4. ORA-03113:通信チャネルのファイルの終わり