Я работаю над проектом Symfony с Propel ORM. В моей модели у меня есть таблица, в которой ее элементы могут быть связаны со многими элементами одной и той же таблицы другой таблицей (таблица ссылок). Некоторый код объяснит лучше:
table1:
id_element: integer;
[...]
и таблица ссылок:
link_table:
id1: fk to table1;
id2: fk to table1;
Мне нужно создать запрос с Propel Criteria, который возвращает мне все связанные элементы с определенным элементом. Проблема в том, что элемент, который я хочу указать, может быть как в поле id1, так и в поле id2 таблицы ссылок.
теперь некоторые из моих кодов определения критериев (очевидно, не работают)
$c = new Criteria();
$c->addJoin($linkTable::ID1,$table::ID);
$c->addJoin($linkTable::ID2,$table::ID);
$c->addOr($linkTable::ID1,$specific_id);
$c->addOr($linkTable::ID2,$specific_id);
$result = $table->doSelect($c);
и это SQL-код, который я хочу сгенерировать:
SELECT * FROM table
WHERE table.ID IN
(SELECT link_table.ID1 FROM link_table
WHERE link_table.ID2 = "the id that i want"
)
OR table.ID IN
(SELECT link_table.ID2 FROM link_table
WHERE link_table.ID1 = "the id that i want"
)
Так я должен сделать 2 соединения, по одному на каждую сторону таблицы ссылок? Есть ли способ сделать "or-join
"? Пожалуйста, помогите мне!
Большое спасибо за потраченное время:)