2014-02-13 41 views
0

怎麼用逗號分隔的編號爲CakePHP的外鍵,我NursingHome模型特殊化模型NursingHome.specialization_ids=2,4,7的這些ID,我使用單查詢想要有各自的名稱,我使用此代碼:CakePHP的逗號分隔的編號爲外國ID

class NursingHomeextends AppModel { 
public 'hasMany' => array(
     'Specialization' => array(
      'className' => 'Specialization', 
      'foreignKey' => false, 
      'conditions' => 'FIND_IN_SET(Specialization.id,NursingHome.specialization_ids)', 
     ), 
); 
} 

是否有任何方法可以做到這一點?

+1

這是一個不好的設計,因爲當用大量數據的面對它的速度慢。 –

+0

寫一個快速的腳本可能會更好,可以將它們全部拖出並放入自己的表格中。對Mihai而言,按照您的要求進行設計並不是很好的設計。 – Dave

+0

好的,謝謝你的建議我改變了我的數據庫模型,如果你有其他方法,你可以指定 –

回答

1

首先需要做的ID的數組。

$storIds = array(2,4,7); 

然後你有2種方法來執行這個查詢。

第一:

public 'hasMany' => array(
    'Specialization' => array(
     'className' => 'Specialization', 
     'foreignKey' => false, 
     'conditions' => 'FIND_IN_SET(\''. $storeIds .'\',Specialization.id)', 
     ) 
    ), 
); 

第二

'conditions' => array('Specialization.id' => $storIds) 
+0

謝謝,但在這種方法中,我必須將來自NursingHome.specialization_ids的id先寫入數組,然後我可以使用這種方法,一個查詢,我必須把兩個查詢獲取名稱。 –

0

我認爲你可以做到以下幾點:

$ListOfIds = new array(1,2,3,4); 

,然後用它在條件這樣

'conditions' => array('Specialization.id' => $ListOfIds)