2

如何在此表达 where 子句:

select * from TABLE where LENGTH(COLUMN)  > 0

在 xPDO 中?

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

不起作用,它会导致这样的结果:

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

2 回答 2

3

对于不受支持的 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

有用。

于 2014-11-03T03:37:17.317 回答
-1

我最终这样做了:

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

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

于 2014-11-01T20:39:26.557 回答