Отношение модели CakePHP, имеющее 2 внешних ключа на одной таблице
У меня есть этот дизайн базы данных
Applicant Table
id | country_id | country_now_id
Country Table
id | name
Country_id - это FK таблицы стран, а country_now_id также является FK таблицы стран. Мой вопрос заключается в том, как бы мне написать этот в модели отношений?
У меня есть этот код:
class Applicant extends AppModel {
public $belongsTo = array(
'Country'=>array(
'className'=>'Country',
'foreignKey'=>'country_id'
),
);
.....
Я не знаю, как добавить country_now_id и поместить его в это отношение. Я даже не уверен, используя $belongsTo
это правильный путь. Я все еще новичок в CakePHP Framework. Ваша помощь будет принята с благодарностью!
Благодарю вас!:)
2 ответа
Обновление: мне удалось решить эту проблему, выполнив это
public $belongsTo = array(
'Job'=>array(
'className'=>'Job',
'foreignKey'=>'psm_id',
),
'Country'=>array(
'className'=>'Country',
'foreignKey'=>'country_id'
),
'NowCountry'=>array(
'className'=>'Country',
'foreignKey'=>'now_country'
),
);
Пытаться
class Applicant extends AppModel {
public $belongsTo = array(
'Country'=>array(
'className'=>'Country',
'foreignKey'=>'country_id'
),
'CountryNow' => array(
'className' => ' Country',
'foreignKey' => 'country_now_id'
)
);
.....
Таким образом, если вы делаете
$this->Applicant->find('all', array('contain'=>array('Country', 'CountryNow')
например, вы получите что-то вроде
Applicant1
Country
CountryNow
Applicant2
Country
CountryNow
Ты используешь belongsTo
правильный путь... пока. Но мы не можем знать наверняка, если вы не объясните нам, почему вы используете этот тип отношений. Например, если вы хотите, чтобы у одного заявителя было две страны, тогда все в порядке. Но есть ли шанс, что заявитель будет иметь более двух стран? Если это может произойти, то структура ваших моделей станет болью. Если вы можете, может быть, переосмыслите логику, если нет, будем надеяться, что всегда есть две страны.