Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Beberapa Dimana Di

Ini pertanyaan yang sangat menarik.

0 =1 akan selalu salah, jadi kueri Anda akan mengembalikan nol baris. Tapi kenapa ini?

Karena dengan mengatur

->whereIn('size', $size)

Laravel mengasumsikan bahwa Anda selalu ingin baris yang dikembalikan dengan salah satu ukuran dalam array yang diteruskan. Jika Anda tidak memberikan nilai apa pun dalam array, Laravel tidak dapat melakukan ini where size IN () karena itu akan menjadi kesalahan sintaks (pada dasarnya Anda mengatakan beri saya semua baris yang cocok dengan ukuran ini, tetapi Anda tidak lulus ukuran). Jadi jika array kosong itu hanya menempatkan 0 = 1 .

Untuk memberi tahu Laravel, jika tidak ada ukuran yang dilewati, untuk tidak menambahkan ketentuan ukuran, cukup beri tanda centang sebelum itu.

$product = new Product;

if (!empty($sizes)) {
    $product = $product->whereIn('size', $sizes);
}

$products = $product->get();

Btw perilaku ini adalah perbaikan terbaru . Di versi Laravel sebelumnya, jika Anda melewatkan array kosong, Anda baru saja mendapatkan pengecualian untuk kesalahan sintaksis. Sekarang ditangani dengan hanya mengatur 1 = 0




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Shell Script untuk mematikan proses tidur mysql secara otomatis

  2. Menggunakan indeks, menggunakan sementara, menggunakan filesort - bagaimana cara memperbaikinya?

  3. jalur libmemcached?

  4. Peringkat MySQL dalam Kasus Ikatan

  5. Pilih hanya tahun dari MySql