如何将LENGTH()条件的SQL转换为xPDO?

时间:2014-11-01 19:27:34

标签: mysql modx modx-revolution xpdo

如何在此表达where子句:

select * from TABLE where LENGTH(COLUMN)  > 0

在xPDO中?

$criteria->where(array('LENGTH(customer_po_num):>' => '0'));

不起作用,结果如下:

`InventoryData`.`LENGTH(customer_po_num)` > '0' 

2 个答案:

答案 0 :(得分:2)

对于不受支持的SQL运算符,通常可以通过将条件包含在字符串而不是数组中来强制条件进入查询:

$criteria->where('LENGTH(customer_po_num) > 0');

编辑:下面提供的工作示例

$c = $modx->newQuery('modResource');
$c->where('LENGTH(pagetitle) > 0');
$c->select('pagetitle');
$c->prepare();
print_r($c->toSql());

返回以下(工作)SQL:

SELECT `pagetitle` 
FROM `ovo_site_content` 
AS `modResource` 
WHERE LENGTH(pagetitle) > 0

有效。

答案 1 :(得分:-1)

我这样做了:

$criteria->where(
array('`InventoryData`.`id` NOT IN (SELECT id FROM modx_gssi_inventory_data where LENGTH(customer_po_num) > 0)'));

不确定这是最好的方式,但它确实有效。