如何在laravel中不使用modelname_id建立关系?

时间:2017-07-18 18:23:38

标签: laravel eloquent laravel-eloquent

我正在尝试为帖子和类别使用一对多关系。对于数据库列,如果我像这样使用



  Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->integer('category_id');
            $table->timestamps();
        });



 在Post模型中

    public function Category()
{
    return $this->belongsTo('App\Category');
}

在类别模型中

 public function posts()
{
    return $this->hasMany('App\Post');
}

如果我使用上面的方法,例如 $ table->整数(' category_id'),它的工作原理。但我想使用自定义名称之类的   $ table->整数(' cat_id'),不使用category_id之类



  Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
             $table->integer('cat_id');
            $table->timestamps();
        });



 我正在使用laravel 5.4,请帮帮我。感谢。

1 个答案:

答案 0 :(得分:2)

如果您在一对多关系下Eloquent: Relationships查看Laravel网站,您会看到:

  

与hasOne方法一样,您也可以通过将其他参数传递给hasMany方法来覆盖外键和本地键:

return $this->hasMany('App\Comment', 'foreign_key');

return $this->hasMany('App\Comment', 'foreign_key', 'local_key');

$this->belongsTo的情况也是如此,这只是一对多的关系。所以在你的情况下:

return $this->belongsTo('App\Category', 'cat_id');