我已经阅读了Laravel Eloquent关系和数据库迁移文档,但是有一件事我不明白。我们可以通过创建迁移文件来在两个表之间建立关系,例如:
public function up()
{
Schema::create('keywords', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->integer('keyword_group_id')->unsigned();
$table->foreign('keyword_group_id')->references('id')->on('keyword_groups')->onDelete('cascade');
});
}
在执行php artisan migrate命令后,我们得到了两个通过一对多关系连接的表格。 另一方面,文档描述了在两个Eloquent之间创建关系的过程。在我的情况下,它看起来像:
class Keyword extends Model
{
public $timestamps = false;
protected $fillable = array('name');
public function keywordGroup()
{
return $this->belongsTo('App\KeywordGroup');
}
}
class KeywordGroup extends Model
{
public $timestamps = false;
protected $fillable = array('name');
public function keywords()
{
return $this->hasMany('App\Keyword');
}
}
但是,如果我在迁移文件中注释掉代码字符串,这将使模型类中表之间的关系失效,那么这两个连接函数就不会创建任何关系。请问为什么我们需要在模型类中编写这些方法?keywordGroup和keywords