sql >> Databáze >  >> RDS >> Mysql

Jak mohu použít BETWEEN a AND v laravel

Pokud chcete pouze vytvořit dotaz / získat čistá data bez jakékoli logiky kolem toho, můžete jednoduše použít Query Builder:

$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();

A určitě můžete použít stejnou syntaxi, pokud pracujete s Model:

$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();

Malé dodatečné vysvětlení týkající se vaší otázky, jak používat AND výmluvně:

AND se používá ve výchozím nastavení, pokud používáte 2 nebo více where() s. Takže

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

rovná se

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

Pro OR můžete použít orWhere() :

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

což se rovná

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

A někdy můžete potřebovat něco složitějšího, například:

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

V Eloquent by to bylo:

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. Konfigurace CentOs PHP a MySql

  2. Jak mohu optimalizovat dotaz MySQL pro aktualizaci?

  3. Jak vypsat všechny pohledy v databázi PostgreSQL

  4. Zahrnout názvy sloupců do výsledků dotazu SQLite