Laravel eloquent удаляет все записи, идентификаторы которых не равны списку идентификаторов

#laravel #eloquent

#laravel #eloquent

Вопрос:

Итак, у меня есть таблица, содержащая активные и неактивные уроки (на данный момент все помечены как активные, я хочу удалить неактивные, а не обновлять). Я получаю список всех активных уроков.

     foreach($lesson->data as $newdata){
        $newdata->id; 
    }
  

$newdata-> id представляет идентификаторы все еще активных уроков, поэтому я хочу удалить все уроки, у которых нет идентификатора из приведенного выше результата foreach. Есть ли способ построить запрос?

Что-то вроде: … ->где(‘l_id’, ‘!=’, ‘$newdata->’)-> Или где(‘l_id’, ‘!=’, ‘$newdata->’) … в этом смысле вроде как. В этой точной форме это не сработает.

Ответ №1:

Если у вас уже есть коллекция и вы хотите удалить все, кроме записей, которые находятся в этой коллекции, вы можете сделать что-то вроде:

 $idsToKeep = $lessons->pluck('id')->toArray();
Lessons::whereNotIn('id', $idsToKeep)->delete();
  

Перед удалением некоторых записей я рекомендую сделать резервную копию ваших данных.