CakePHP saveAll сохраняет один HABTM, но не другой - PullRequest
0 голосов
/ 13 января 2012

У меня есть Territory, что habtm и User и School:

public $hasAndBelongsToMany = array(
  'School' => array(
    'className'             => 'School',
    'joinTable'             => 'schools_territories',
    'foreignKey'            => 'territory_id',
    'associationForeignKey' => 'school_id',
    'order'                 => 'School.name',
  ),
  'User' => array(
    'className'             => 'User',
    'joinTable'             => 'territories_users',
    'foreignKey'            => 'territory_id',
    'associationForeignKey' => 'user_id',
    'order'                 => array( 'User.last_name', 'User.first_name' ),
  ),
);

Когда я добавляю Territory, форма собирает данные School и устанавливает данные User на основе текущего аутентифицированного пользователя. Однако вызов $this->Territory->saveAll( $this->data ) сохраняет данные Territory и School, но ничего для ассоциации User.

Это один из тех моментов, когда я знаю, что сделал что-то действительно, действительно глупое, но просто не вижу этого. Вот как выглядят данные непосредственно перед сохранением:

Array
(
    [Territory] => Array
        (
            [id] => 
            [advisor_first_name] => Oompa
            [advisor_last_name] => Loompa
            [usrp_number] => 3908
            [school_search] => sylv
        )

    [School] => Array
        (
            [School] => Array
                (
                    [0] => 4ee0bbde-3714-419d-88a5-6d78147402e8
                    [1] => 4ee0bbde-33d8-49ce-8e71-6d78147402e8
                    [2] => 4ee0bbde-e190-4894-a522-6d78147402e8
                    [3] => 4ee0bbde-7734-47ef-a2c0-6d78147402e8
                    [4] => 4ee0bbde-be54-4087-8437-6d78147402e8
                    [5] => 4ee0bbde-de00-473e-b6ae-6d78147402e8
                    [6] => 4ee0bbde-7fc0-4683-a957-6d78147402e8
                    [7] => 4ee0bbde-0434-4b78-9295-6d78147402e8
                    [8] => 4ee0bbde-defc-43cb-8c8e-6d78147402e8
                    [9] => 4ee0bbde-de18-45da-8e23-6d78147402e8
                    [10] => 4ee0bbde-fff8-4fc0-bcd7-6d78147402e8
                    [11] => 4ee0bbde-e1c8-42f5-9663-6d78147402e8
                )

        )

    [User] => Array
        (
            [User] => Array
                (
                    [0] => e71fcad2-2a71-11e1-837a-66730eed7998
                )

        )

)

Одно интересное замечание, возможно, заключается в том, что когда я выкидываю $this->Territory из TerritoriesController, я вижу свойство School (конечно, содержащее определение модели School), но не свойство User. С другой стороны, обе модели правильно представлены в массиве свойств hasAndBelongsToMany.

Если кто-нибудь увидит, чего мне не хватает, я буду вечно благодарен. Шутки в сторону. Мои глаза кровоточат от сочетания взгляда и плача.

Спасибо.

...