Laravel 5.5 отношение Многие ко многим

Я делаю свой первый проект с laravel 5.5 aç, и теперь я устанавливаю модели и отношения

Мой проект состоит из социальной сети видеоигр.

Две модели, которые я хочу связать, следующие: это будет отношение многих ко многим:

жанр игры:

class Genero extends Model
{
    protected $primaryKey = "cod";
    public $incrementing = true;
    protected $keyType = "int";

    protected $table = "generos";
    protected $fillable = ["cod","nombre"];
    //public $timestamps = false;

    public function juegos(){
        return $this->belongsToMany('App\Juego',"juegosGeneros","codGenero","codJuego");
    }
}

И игра

class Juego extends Model
{
    protected $primaryKey = "codJuego";
    public $incrementing = false;
    protected $keyType = "int";

    protected $table = "juegos";
    protected $fillable = ["cod", "nombre"];
    //public $timestamps = false;

    public function generos(){
        return $this->belongsToMany('App\Genero',"juegosGeneros","codJuego","codGenero");
    }
}

Мои таблицы БД таковы:

CREATE TABLE juegos(
cod INT AUTO_INCREMENT,
nombre VARCHAR(50),
PRIMARY KEY (cod)
);

CREATE TABLE generos(
cod INT AUTO_INCREMENT,
nombre VARCHAR(50),
PRIMARY KEY (cod)
);

CREATE TABLE juegosGeneros(
codJuego INT,
codGenero INT
);

Моя проблема: я вставил данные в таблицы и при их получении

<?php
        $juego = \App\Juego::where("cod","1")->first();
        dd($juego->generos);
?>

они вернули мне пустой массив

Collection {#188 ▼
  #items: []
}

Наблюдая за запросами к базе данных laravel, сделайте следующее:

select `generos`.*, `juegosGeneros`.`codJuego` as `pivot_codJuego`, `juegosGeneros`.`codGenero` as `pivot_codGenero` 
from `generos` 
inner join `juegosGeneros`
on `generos`.`cod` = `juegosGeneros`.`codGenero` where `juegosGeneros`.`codJuego` is null

Я не знаю причину этого состояния, и я думаю, что это проблема

 where `juegosGeneros`.`codJuego` is null

Я очень ценю вашу помощь

1 ответ

Вы установили неправильный первичный ключ:

class Juego extends Model
{
    protected $primaryKey = "cod";
}
Другие вопросы по тегам