У меня есть две таблицы: статьи и категории. У статей может быть назначена одна категория. Но у них нет категории.
Схема:
Article: columns: title: type: string(255) content: type: string(255) category_id: type: integer(4) Category: columns: name: type: string(255) article_id: type: integer(4) relations: Article: class: Article local: article_id foreign: id foreignAlias: ArticleCategories
Я могу запросить для всех статей, которым присвоены категории, как это:
$articles= Doctrine_Query::create() ->from('Article a') ->leftJoin('a.Category c ON c.article_id = a.id') ->where('c.id > 0') ->execute();
Он возвращает это:
Object->Array ( [0] => Array ( [id] => string(1) "1" [title] => string(4) "test" [content] => string(4) "test" [Category] => Array ( [0] => Array ( [id] => string(1) "2" [name] => string(7) "testing" ) ) ) etc...
Мне нужно сделать запрос для статей, в которых нет отношения к категории. Я не могу просто сказать ->where('c.id = NULL')
либо потому, что, если нет отношения к категории, то в объекте нет какого-либо массива [Category]
. Он возвращает только id, title and content
. Также я не могу сказать ->where(a.Category = NULL)
потому что Категория не является столбцом статьи.
Есть идеи?
ОБНОВЛЕНИЕ Я допустил ошибку на Схеме и обновил ее. Я знаю, что для категории не имеет смысла только иметь отношения с одной статьей, но на самом деле я не использую статьи / категории. Я просто использовал эти термины в качестве примеров.