@null_object

Почему Laravel не использует pivot таблицу?

Есть таблицы:
  • movies
  • genres
  • genres_movies


Для каждой таблицы соответственно создана модель:
class Movie extends Model
{
    use HasFactory, Filterable;

    public function genres(): BelongsToMany
    {
        return $this->belongsToMany(Genre::class)->using(GenreMovie::class);
    }
}

class Genre extends Model
{
    use HasFactory;
}

class GenreMovie extends Pivot
{
    public $incrementing = true;
    protected $table = 'genres_movies';
}

Почему появляется ошибка
Illuminate\Database\QueryException: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "genre_movie" does not exist
когда выполняется такой код:
public function index(): \Illuminate\Support\Collection
    {
        return Movie::latest()->with('genres')->get();
    }

Делал по доке. В моем понимании при использовании using информация о промежуточной таблице должна браться из ее модели, а не из аргумента belongsToMany. Так ли это?
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
vfreelancer
@vfreelancer
php
pivot таблица по умолчанию названия в ед. числе должны быть: protected $table = 'genre_movie'; иначе надо указывать явно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы