Reputation: 3
I am having trouble deleting the relation model records, I want to keep some records and delete all others, for example, there is x number of records in the table now I want to keep the first five and delete all others. I am using skip and take to filter the records.
$quiz->questions()->latest()->skip($request->total_questions)->take(PHP_INT_MAX)->each(function ($row) {
$row->options()->delete();
$row->delete();
});
I have a model quiz that has related questions and questions have other relation options so what I won't do is keep some questions like 5 or 6 maybe and delete all other questions with their options but in this query, all questions related to the quiz are deleted.
P.s when I use to get() it shows me the correct result which I want but I don't know why it is not working with delete()!
Please help anyone.
Upvotes: 0
Views: 387
Reputation: 223
You have to add get()
after take()
as following:
$quiz->questions()->latest()->skip($request->total_questions)->take(PHP_INT_MAX)->get()->each(function ($row) {
$row->options()->delete();
$row->delete();
});
Upvotes: 1