SEVNTEC
@SEVNTEC
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

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

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

Войти через TM ID
Похожие вопросы
Max.Credit Санкт-Петербург
от 150 000 до 150 000 руб.
Willz Москва
от 150 000 руб.
Fmedia Санкт-Петербург
от 40 000 до 100 000 руб.
15 авг. 2018, в 22:39
60000 руб./за проект
15 авг. 2018, в 22:01
6000 руб./за проект
15 авг. 2018, в 21:18
30000 руб./за проект