2012-03-29 2 views
0

У меня есть две таблицы: Siteaddress и Jobsheet. В таблице Jobsheet есть поле с именем siteaddress, которое содержит идентификатор адреса сайта, хранящегося в таблице Siteaddress.Соедините две таблицы, используя указанные поля в CakePHP

Проблема, которую я имею, что в то время как я делаю объединение в контроллере, CakePHP вступает в Siteaddress таблицу в Jobsheet таблицы с использованием id полей в обеих таблицах. Это вызывает проблему, так как в таблице Siteaddress есть только одна запись и несколько записей в таблице Jobsheet.

Мне нужно сделать, чтобы CakePHP присоединился к Jobsheet.siteaddress до Siteaddress.id вместо того, как он работает в данный момент.

Как я могу это сделать?

Ниже приведен код отношения из файла Jobsheet модели:

public $hasOne = array(
    'Company' => array(
     'className' => 'Company', 
     'foreignKey' => 'id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ), 
    'Siteaddress' => array(
     'className' => 'Siteaddress', 
     'foreignKey' => 'id', 
     'conditions' => '', 
     'fields' => '', 
     'order' => '' 
    ) 
); 

Ура!

ответ

1

Вы установили foreignKey в id, поэтому Cake использует это для создания соединения. Этот ключ может быть установлен в любое поле таблицы, которое вы хотите в таблице, в которую вы хотите присоединиться. Если я вас правильно понял, вы должны установить foreignKey в siteaddress:

'Siteaddress' => array(
    'className' => 'Siteaddress', 
    'foreignKey' => 'siteaddress', 
    'conditions' => '', 
    'fields' => '', 
    'order' => '' 
) 

См the manual entry для hasOne, а также.

EDIT:

В этом случае $belongsTo может быть лучше подходят в качестве ассоциации.

+0

Я установил его в 'siteaddress', но затем возвращается с ошибкой:' Колонка не найдена: 1054 Неизвестный столбец 'Siteaddress.siteaddress' in 'on clause'' – mickburkejnr

+1

Ах, вы правы. В этом случае 'hasOne' может и не быть той ассоциацией, которую вы ищете. Определение ассоциации '$ belongsTo' с' siteaddress' 'foreignKey' может быть лучшим вариантом. – mensch

+0

Использование '$ принадлежит. Большое спасибо! – mickburkejnr

Смежные вопросы