我读过laravel雄辩的关系&数据库迁移文档,但我无法理解一件事。我们可以通过创建迁移文件来创建两个表之间的关系:
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 命令之后,我们有两个与一对多关系表相关联。 另一方面,docs描述了创建两个Eloquents之间关系的过程。就我而言,它看起来像:
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');
}
}
但是如果我评论一串代码,它会在迁移文件中的表之间产生关系,那么模型类中的这两个 connection 函数就不会产生任何关系。 能否请您解释一下我们在模型类中编写方法的必要性? keywordGroup &的关键字
答案 0 :(得分:0)
迁移创建数据库结构,如果在此处创建外键,则会在数据库本身中添加关系。
您在模型中创建的关系对数据库本身没有影响,它们仅用于使从代码中的不同表加载数据变得容易。无论您是否在数据库中创建了外键,这些都可以正常工作。