我正在使用 Cakephp 3 并尝试从字段为非空的表中获取一些行/记录。
例如: -
我有一个areas
表,其中包含一个名为Area_block
的字段。我需要获取那些在Area_block
内有内容的行的记录。简单来说,我不需要空行或Area_block
行。
Area_block
不是NULL字段。所以它仍然是空/空白。
我试过了
$conditions = ['Area_Block IS NOT NULL'];
$conditions = ['NOT' => array('Area_Block' => '')];
$conditions = ['Area_Block <>' => ''];
$conditions = ['Area_Block !=' => ''];
但没有任何作用!!
我的环境包括apache上的MSSQL server 2008和PHP 5.6。
请帮助!!
答案 0 :(得分: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食谱中的Automatic IS NOT NULL Creation。
答案 1 :(得分:0)
我认为@InigoFlores提供的解决方案在某种程度上起了作用,但是对某些记录失败了。
这就是我为使其完美运作所做的一切。
$conditions = ['DATALENGTH(Area_Block) >' => 0];
我希望它有所帮助。