2014-10-06 89 views
0

我有兩個先前存在的由CMS創建的表。我已經將它們映射到了Symfony2中,並且我試圖建立兩個表之間的關係,但我現在注意到CMS創建這些表時沒有使用外鍵。該表table_uploads有一個與其他表相關的列,稱爲column_table_namecolumn_record_num學說找到沒有外鍵的相關記錄

所以,假設我們有三個表... table_studentstable_uploadstable_teachers,表table_uploads將可以進行studentscolumn_table_nameteachers的值,以顯示其相對於其他兩個表,以及在column_record_num一些對應於其他表的主鍵。然而,這三個表中實際上都沒有定義的外鍵。

在Symfony的,我想打電話表

$students = $this->getDoctrine()->getRepository('SchoolBundle:Students')->findAll(); 

,然後加載從另一個表中的相關記錄以這樣的方式一樣(我知道select_related實際上並不存在,但是這基本上是我正在創建的功能)

$students->select_related() 

這是否可能不存在外鍵?我能想到的唯一方法是從$students中獲取列值,並使用這些值對另一個表運行另一個查詢併合並兩個結果。

回答

0

您可以創建一個自定義存儲庫方法來加入不相關的表。 DQL join between unrelated entities?

+0

這似乎是行得通的,但我無法一起拉取信息。例如,'createQuery('SELECT a FROM Users a JOIN Uploads b WHERE a.id = b.id AND a.name ='name_here')'給我'Users'的值並將其改爲'SELECT b'給出我是'Uploads'的值。如果我做'SELECT a,b',我得到一個巨大的數組,其中包含兩個表中的行。是否有一個有組織的數組,上傳的行來自用戶?或者在循環用戶時調用模板中的上傳行? – user2989731 2014-10-08 14:40:15

+0

如果您可以添加關係到這些表格,那將是最好的解決方案。 – dmnptr 2014-10-08 18:32:55