CakeНе могу получить данные HABTM для сохранения с новой записью

Итак, у меня есть две модели, Post и Event. Оба «имеют AndBelongToMany» друг с другом.

В файле модели Post.php у меня есть это:

public $hasAndBelongsToMany = array(
"Events"=>array(
"className"=>"Event",
"joinTable"=>"events_posts",
"foreignKey"=>"post_id",
"associationForeignKey"=>"event_id",
"unique"=>true
)
);

В файле модели Event.php у меня есть это:

public $hasAndBelongsToMany = array(
"Posts"=>array(
"className"=>"Post",
"joinTable"=>"events_posts",
"foreignKey"=>"event_id",
"associationForeignKey"=>"post_id",
"unique"=>true
)
);

В моей базе данных есть таблица с именем «events_posts» с двумя полями: post_id, event_id.

Теперь в другом контроллере, где мне нужно сохранять информацию вручную (не через форму), у меня есть этот кусок кода:

$post_data = array(
"Post"=>array(
"image_id"=>$entry['id'],
"image_url"=>$entry['images']['standard_resolution']['url'],
"image_thumb"=>$entry['images']['low_resolution']['url'],
"image_text"=>$entry['caption']['text'],
"status"=>'1',
"created_on"=>$entry['created_time'],
"instagram_user_id"=>$user_id
),
"Event"=>array(
"Event"=>array($event['Event']['id'])
)
);
$result = $this->Post->save($post_data,array('deep' => true));

Он сохраняет новые данные поста, но не сохраняет отношение в таблицу events_posts … Может кто-нибудь сказать мне, что я делаю неправильно? Это сводит меня с ума.

2

Решение

Используйте сингулярное имя модели для ассоциаций. Следовать Соглашения по моделям и базам данных и добавьте следующий код в вашу модель Post.

class Post extends AppModel {

public $hasAndBelongsToMany = array(
"Event");

}

Затем для сохранения данных из контроллера вам нужно только сохранить ($ post_data).

$result = $this->Post->save($post_data);

Протестировано с CakePHP 2.6.0 и CakePHP 2.3.4.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]