Mysql
 sql >> база данни >  >> RDS >> Mysql

Множество къде в

Това е много интересен въпрос.

0 =1 винаги ще бъде невярно, така че вашата заявка ще върне нула редове. Но защо е това?

Тъй като чрез настройка

->whereIn('size', $size)

Laravel предполага, че винаги искате върнатите редове да бъдат с един от размерите в предадения масив. Ако не подадете никакви стойности в масива, Laravel не може да направи това where size IN () защото това ще бъде синтактична грешка (вие основно казвате дайте ми всички редове, които съответстват на този размер, но не предавате размер). Така че в случай, че масивът е празен, той просто поставя 0 = 1 .

За да кажете на Laravel, ако не е подаден размер, да не добавя условие за размер, просто поставете проста проверка преди това.

$product = new Product;

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

$products = $product->get();

Между другото това поведение е актуална корекция . В предишни версии на Laravel, ако подадете празен масив, просто сте имали изключение за синтактична грешка. Сега това се обработва само чрез задаване на 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. Mysql Изберете само процент от редовете

  2. Стартирайте и спрете локалния mysql екземпляр от приложението

  3. Вмъкнете данни от инструмента за избор на дата в базата данни с помощта на php

  4. Каква е правилната стойност по подразбиране за десетично поле на MySQL?

  5. Получаване на 0KB файл с размер, докато архивирате mysql база данни с помощта на mysql dump