Литиевая модель найти запрос с оператором <>
Я пытаюсь получить строки, исключая те, которые уже находятся в другой таблице:
| 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), чтобы вам не нужно было использовать собственный запрос и позволить модели выполнить всю работу за вас.