Мне интересно, как удалить повторяющиеся записи в таблице DB и сохранить новые копии в таблице. Это как моя таблица выглядит следующим образом:Laravel 5.1 удаление дубликатов в DB с eloquent
$table->increments('id');
$table->string('text');
$table->string('type');
$table->integer('external_id');
$table->timestamps();
Поскольку я импортировать из других БД, и я хотел бы импортировать все данные один раз в день, значит, будут какие-то существующие записи уже в БД, и новые записи, как Что ж. Поскольку мне нужно сохранить только новые записи, мне нужно удалить все старые записи (дубликаты и уникальные записи, которые не являются новыми). Есть ли способ сделать это с Eloquent в Laravel 5.1? Я попытался это, но он уничтожает все в таблице:
$deleteDuplicates = DB::table('questions')->select('external_id')->distinct()->delete();
Это дает мне последователей Ошибка ng: QueryException в строке Connection.php 651: SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'as 'n1' из' questions' как 'n1' inner join' questions' как 'n2' на' n1'.'id'> '' в строке 1 (SQL: удалить 'questions' как' n1' из 'questions' как' n1' inner join 'questions' как' n2' на 'n1'.'id'>' n2'.'id' где 'n1 '.'external_id' = n2.external_id) – Marco
Проверьте приведенную выше ссылку. Если красноречивый не работал, используйте построитель запросов, где вы можете даже поставить raw sql. Но сначала проверьте SQL в своем тестовом db, если это работает или нет. – iamkdev