@AlexRas

Как в Yii2 исправить ошибку при удалении связанных записей из бд?

Здравствуйте, получаю такую ошибку:
PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'where clause' in .....\vendor\yiisoft\yii2\db\Command.php:842

Сначало удаляет основную запись:
SELECT * FROM `user` WHERE `id`=8

А дальше пытается удалить связанную таблицу:
DELETE FROM `user_review` WHERE `user_id`=8

Но в таблице user_review нет столбца user_id, там используется to_user_id или from_user_id

Миграция таблицы user_review:
public function safeUp()
{
	$tableOptions = null;
	if ($this->db->driverName === 'mysql') {
		$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
	}

	$this->createTable('{{%user_review}}', [
		'id' => $this->primaryKey(),
		'from_user_id' => $this->integer()->notNull(),
		'to_user_id' => $this->integer()->notNull(),
		'stars' => $this->integer()->notNull(),
		'value' => $this->text(),

		'status' => $this->smallInteger()->notNull()->defaultValue(1),

		'created_at' => $this->integer()->notNull(),
		'updated_at' => $this->integer()->notNull(),
	], $tableOptions);

	$this->addForeignKey('user_review-from_user_id', '{{%user_review}}', 'from_user_id', '{{%user}}', 'id');
	$this->addForeignKey('user_review-to_user_id', '{{%user_review}}', 'to_user_id', '{{%user}}', 'id');
}


Подскажите как это решить.
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
@karminski
Senior React.JS Developer
Насколько я помню, удаление связанных через FOREIGN KEY записей происходит в MySQL автоматически в зависимости от параметра ON DELETE. Поэтому не очень понятно где Вы видите строку
DELETE FROM `user_review` WHERE `user_id`=8

Вероятно, она вызывается в модели в методе afterDelete. Ну или в контроллере, что плохо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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