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

How to make relationship without using modelname_id in laravel?

我正在尝试对 post 和 category.And 数据库列使用一对多关系,如果我这样使用

  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->integer('category_id'),它可以工作。但我想使用 自定义名称 喜欢 $table->integer('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,请帮助我。谢谢。

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

Like the hasOne method, you may also override the foreign and local keys by passing additional arguments to the hasMany method:

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