Lithium Model使用<>查找查询操作者

时间:2014-10-14 08:58:44

标签: lithium

我正在尝试获取除已存在于另一个表中的行之外的行:

| Content   | ContentSelected
| ––––––––  | ––––––––––––––––––––––––-
| id        | content_id | operation_id
| 1         | 1          | 9999
| 2         | 3          | 1000
| 3

=> 2,3

这是我尝试运行此查询的方式:

Content::find('all', array(
    'joins' => array(new Query(array(
        'source' => 'ContentSelected',
        'constraints' => array('ContentSelected.operation_id' => 9999),
     'conditions' => array(
         'Content.id' => array('<>' => 'ContentSelected.content_id')
));

这里是适配器运行的SQL查询:

SELECT * FROM "Content" AS "Content"
JOIN "ContentSelected" ON "ContentSelected"."operation_id" = 1
WHERE ("Content"."id" <> 0);

是否有其他方法可以执行排除结果的查询,或者强制适配器在where子句中写入ContentSelected.content_id而不是0

由于

1 个答案:

答案 0 :(得分:0)

您可以使用Model::connection()->read()在Li3中运行本机sql。看看http://www.jblotus.com/2011/10/25/executing-raw-mysql-queries-in-lithium/

Content::connection()->read($your_sql);

但在使用这样的解决方案之前。尝试使用模型关系(http://li3.me/docs/manual/models/relationships.md)正确实现模型,这样您就不需要使用本机查询,让模型为您完成工作。