Имя ассоциативной модели в CakePHP

#php #arrays #cakephp #associations

#php #массивы #cakephp #ассоциации

Вопрос:

Сначала извините за мой английский. У меня проблема с ассоциативными моделями в CakePHP. Например, когда я связываю более двух моделей

 $this->Album->bindModel(
массив(
'hasMany'=>массив(
 'Фото'=>массив (
 'className'=>'Photo'
 ),
'Альбом'=>массив(
 'Имя_класса'=>'Альбом'
 )
 )
 )
 );

У меня есть:

Массив
(
 [Альбом] => Массив
 (
 [id] => 22
 [f_name] => Какой-нибудь альбом
 [0] => Массив
 (
 [id] => 19
 [f_name] => Другой альбом
 [id_parent] => 22
 [Фото] => Массив
 (
....

Можно ли каким-либо образом установить ключ в родительской таблице? Я имею в виду, что я не хочу иметь «0» в качестве ключа, может быть «Album1», «Album2» и так далее.

Ответ №1:

Проблема, вероятно, связана с привязкой модели к самой себе под тем же именем. В альбоме есть много альбомов, вероятно, где-то происходит сбой. Используйте уникальное имя для ассоциации, например, Album hasMany SubAlbum.

Комментарии:

1. Я знаю, что есть модель в ее собственной модели. Я написал пример, в facet есть и другие таблицы. Существует своего рода иерархическое дерево объектов. У одного объекта есть дочерние объекты — объекты того же типа (Альбом-> Альбом) или другого типа (Альбом-> Фото). В любом случае — как установить псевдоним модели в ассоциациях?

2. Вы уже почти там: $this->Album->bindModel( array( 'hasMany'=>array( 'SomeOtherName'=>array( 'className'=>'Photo' ) ) ) );