При удалении определенного mov ie, я хочу удалить все showtime, связанные с ним. У меня есть 3 таблицы, связанные с этим запросом.
- Showtime (который имеет отношение мм с таблицей времени (сводная таблица showtime_time)
- Times
- Фильмы
Что я пробовал:
MovieController:
public function destroy($id)
{
$movie = Movie::findOrFail($id);
if (ShowTime::where('movie_id', '=', $id)->exists()) {
$showtimes = ShowTime::whereIn('movie_id', '=', $id)->get();
foreach ($showtimes as $showtime) {
$showtime->times()->detach();
$showtime->delete();
$movie->delete();
}
return back();
} else {
$movie->delete();
}
return redirect()->route('movies.index');
}
, который дал мне эту ошибку.
Аргумент 1 передан в Illuminate \ Database \ Query \ Builder :: cleanBindings () должен иметь тип массива с заданной строкой и вызываться в C: \ Users \ lenovo \ cinetime_nepal_backend \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Builder. php on line 907
Класс модели
<?php
namespace Modules\Movie\Entities;
use Illuminate\Database\Eloquent\Model;
class Movie extends Model
{
protected $guarded = ['id']; //fillable
protected $hidden = ['created_at', 'updated_at'];
public function showTimes()
{
return $this->hasMany(ShowTime::class, 'movie_id');
}
}
Вот так я удаляю showtime в showtimecontroller
ShowtimeController
public function destroy($id)
{
$showtime = ShowTime::findOrFail($id);
$showtime->times()->detach();
$showtime->delete();
return back();
}
Я плохо знакомый с laravel, я искал и пробовал много кодов, ответили на этом сайте, но не мог помочь себе. Помогите пожалуйста