Литиевая модель найти запрос с оператором <>

Я пытаюсь получить строки, исключая те, которые уже находятся в другой таблице:

| 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);

Есть ли другой способ выполнить запрос, исключая результаты, или заставить адаптер написать ContentSelected.content_id вместо 0 в пункте, где?

Спасибо

1 ответ

Ты можешь использовать Model::connection()->read() запустить родной sql в Li3. Проверьте это 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), чтобы вам не нужно было использовать собственный запрос и позволить модели выполнить всю работу за вас.

Другие вопросы по тегам