我正在使用Cakephp3,并试图从字段为非空的表中获取一些行/记录。
例如:-
我有一个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和apache上的PHP 5.6。
请帮忙!!
我知道您的表包含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
字段设置为默认值NULL
,或默认值为''
,并阻止该字段接受NULL
值。
仅使用NOT NULL
值可能更容易。如果您更改表格以反映这一点,您只需要检查''
值:
$conditions = ['Area_Block IS NOT' => ''];
请参阅3.x Cookbook中的自动IS NOT NULL创建。
我认为@InigoFlores提供的解决方案在一定程度上起到了作用,但在某些记录中失败了。
以下是我为使它完美工作所做的。
$conditions = ['DATALENGTH(Area_Block) >' => 0];
我希望它能帮助到别人。