Я использую Cakephp 3 и пытаюсь получить некоторые строки/записи из таблицы с полем как непустым.
Например:-
У меня есть таблица areas
с полем Area_block
. Мне нужно получить записи для тех строк, которые имеют что-то внутри Area_block
. Простыми словами, мне не нужны пустые или NULL строки Area_block
.
Area_block
не является полем NULL. Таким образом, он остается пустым/незаполненным.
я пытался
$conditions = ['Area_Block IS NOT NULL'];
$conditions = ['NOT' => array('Area_Block' => '')];
$conditions = ['Area_Block <>' => ''];
$conditions = ['Area_Block !=' => ''];
но ничего не работает !!
Моя среда включает сервер MSSQL 2008 и PHP 5.6 на apache.
Пожалуйста помоги !!
Я понимаю, что в вашей таблице хранятся записи с Area_Block
установленными как NULL
и ''
(пустая строка).
Попробуйте следующее:
$conditions = [['Area_Block IS NOT' => null], ['Area_Block IS NOT' => '']];
Это также должно работать:
$conditions = ['Area_Block IS NOT' => [null,'']]; //haven't tested it
Однако, чтобы уменьшить сложность, в базе данных вы можете установить для поля Area_Block
по умолчанию Area_Block
NULL
, или по умолчанию - ''
и запретить полю принимать значения NULL
.
Работа с исключительными значениями NOT NULL
может быть проще. Если вы измените таблицу, чтобы отразить это, вам нужно будет только для проверки ''
значений:
$conditions = ['Area_Block IS NOT' => ''];
См. Автоматическое создание NOT NOT NUML в Поваренной книге 3.x.
Я думаю, что решение, предоставленное @InigoFlores, работало в некоторой степени, но не удалось выполнить некоторые записи.
Вот что я сделал, чтобы он работал отлично.
$conditions = ['DATALENGTH(Area_Block) >' => 0];
Надеюсь, это поможет кому-то.
'Area_Block IS NOT NULL'
. Я должен был попробовать больше. ;)