У меня есть таблица с именем столбца firmware_flash_result, которая является либо неудачной, либо проходной.построитель запросов возвращает правильный результат для Pass, но в случае неудачи он возвращает неверный результат.
Фактический запрос и результат:
SELECT COUNT(DISTINCT `payment_module_id`)
FROM `payment_prod_pograms`
WHERE `created_at` >= "2018-09-17 00:00:00" AND
(
`payment_module_id` LIKE "PB10____18____" OR
`payment_module_id` LIKE "PM10____18____"
) AND
CHAR_LENGTH(`payment_module_id`) = 14 AND
`firmware_flash_result` = "FAIL";
+-------------------------------------+
| COUNT(DISTINCT `payment_module_id`) |
+-------------------------------------+
| 0 |
+-------------------------------------+
Laravel Query Builder:
$payment_prod_failed_test = DB::table('payment_prod_pograms')
->where('created_at','>=','2018-09-17 00:00:00')
->whereRaw('char_length(payment_module_id) = 14')
->where('payment_module_id','like','%PB10____18____%')
->orWhere('payment_module_id','like','%PM10____18____%')
->where('firmware_flash_result','=','FAIL')
->distinct()
->count('payment_module_id');
Приведенный выше запрос возвращает результат 453. Это невозможно.
После некоторой отладки я обнаружил, что:
->orWhere('payment_module_id','like','%PM10____18____%')
вызывает эту ошибку, почему это так?
там1515 записей в базе данных, и все они пропущены, но этот запрос возвращает другой результат. Что я здесь не так делаю?Любая помощь будет оценена