villiwalla
@villiwalla
HTML-верстка

Как обновить запись в промежуточной таблице?

Есть таблицы новостей, проектов и промежуточная таблица связи новостей с проектом и новостей. Не совсем понятно как работает этот link(), хотелось бы примера конкретно в моём случае. Сейчас, таблицы:
news
id | title

projects
id | title

project_news
project_id | news_id

Создаю запись так:
$model = new News(['scenario' => News::SCENARIO_CREATE]);
$project = new ProjectNews(); // Модель таблица project_news
$projectsList = Project::find()->all(); // Для вывода списка проектов
....
if($project->load(\Yii::$app->request->post())) {
 $project->news_id = $model->id;
 $project->save();
}
//  Всё ок, запись создаются, в проекте новости выводятся и т.д


А вот как быть, если необходимо изменить проект к которому привязана новость?
$model = News::findOne(['id' => $id]);
$model->scenario = News::SCENARIO_UPDATE;

$project = ProjectNews::findOne(['news_id' => $id]); // Поиск записи в БД
$projectsList = Project::find()->all(); // Для вывода списка проектов

// Если
$projectId = \Yii::$app->request->post('ProjectNews');
$project->project_id = $projectId['project_id'];
$project->update(); // Ругается на отсутсвие PK

Как обновить запись в промежуточной таблице?
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
Используйте ManyToMany Behavior он решает необходимые Вам задачи
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
В промежуточной таблице для двух полей назначайте PK.
При создании записи пишите данные в оба поля промежуточной таблицы.
При обновлении используйте save(false) вместо update()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы