Laravel 5.5关系很多很多

时间:2018-04-04 19:09:40

标签: php laravel eloquent laravel-eloquent

我正在用laravel5.5aç做我的第一个项目,现在我正在建立模型和关系

我的项目包括一个视频游戏的社交网络。

我想要涉及的两个模型如下:它将是一个多对多的关系:

游戏类型:

Java Application

游戏

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);
?>

观察对数据库laravel的查询执行此操作:

Collection {#188 ▼
  #items: []
}

我不知道这种情况的原因,我认为这就是问题

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

我真的很感谢你的帮助

1 个答案:

答案 0 :(得分:4)

您设置了错误的主键:

class Juego extends Model
{
    protected $primaryKey = "cod";
}
相关问题