2013-03-17 4 views
0

Допустим, каждая книга имеет поля AuthorA и AuthorB. Оба поля являются внешними ключами для таблицы authors.CakePHP: Несколько ссылок на ту же модель

авторы таблицы с полями: id | имя

настольные книги с полями: id | имя | a_author_id | b_author_id |

Как настроить контроллер, модель и представление, чтобы иметь возможность создавать книгу с раскрывающимся списком «author a» и «author b», исходящими из таблицы авторов? Как бы форма-ввод для автора-a (и author-b) выглядела как внутри «Добавить» для модели книги?

ответ

1

Вам необходимо настроить 2 принадлежит вашей ассоциации в вашей модели Book с различными псевдонимами для модели Author.

public $belongsTo = array(
    'AAuthor' => array(
     'className' => 'Author', 
     'foreignKey' => 'a_author_id' 
    ), 
    'BAuthor' => array(
     'className' => 'Author', 
     'foreignKey' => 'b_author_id' 
    ) 
); 

Используйте $this->Book->AAuthor->find('list'), чтобы получить список авторов и установить массив и указать тот же массив, используя 'options' ключ Form->input() вариантов для обоих a_author_id и b_author_id полей.

+0

Если книги могут иметь несколько авторов (не ограничиваясь фиксированной суммой), также возможно использовать отношение HasAndBelongsToMany. Вам нужно будет изменить дизайн базы данных, чтобы достичь этого, и может быть немного сложнее при сортировке/фильтрации книг и т. Д. – thaJeztah

+0

большое спасибо! вы быстро ответили мне очень много! знак равно – Gizzat

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