Соедините две таблицы, используя указанные поля в CakePHP - PullRequest
0 голосов
/ 29 марта 2012

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

Проблема, с которой я сталкиваюсь, заключается в том, что во время объединенияв контроллере 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 Ответ

1 голос
/ 29 марта 2012

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

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

См. ручной ввод для hasOne.

EDIT:

В этом случае $belongsTo может лучше подойти в качестве ассоциации.

...