我正在開發一個symfony項目,推動ORM。在我的模型中,我有一個表,其元素可以通過另一個表(鏈接表)與同一表的很多元素鏈接。一些代碼將更好地解釋:條件雙向加入?
table1:
id_element: integer;
[...]
和鏈接表:
link_table:
id1: fk to table1;
id2: fk to table1;
我需要建立與波輪條件的查詢返回我所有與特定元素相關的元素。問題是我想指定的元素可以像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
」?請幫幫我!
非常感謝您的寶貴時間:)
也許你應該重新考慮你的解決方案,這種遞歸行爲在關係型數據庫中不受鼓勵。你能否提供更多有關這個模型試圖代表什麼的信息。大多數時候,我發現自己對複雜的查詢幾乎總是意味着我沒有想到通過這個問題。 – guiman
下面的表格表示一個過程。這些過程可以與其他過程相關聯,形成一個多對多的關係,並且這個關係必須像我一樣作爲鏈接表來實施(所以我的大學老師說過)。 –