如何在 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');
我正在尝试对 post 和 category.And 数据库列使用一对多关系,如果我这样使用
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->integer('category_id');
$table->timestamps();
});
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();
});
如果您在 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');