表之间的Laravel迁移引用

时间:2016-04-19 06:41:53

标签: php mysql migration laravel-5.2

我读过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 &的关键字

1 个答案:

答案 0 :(得分:0)

迁移创建数据库结构,如果在此处创建外键,则会在数据库本身中添加关系。

您在模型中创建的关系对数据库本身没有影响,它们仅用于使从代码中的不同表加载数据变得容易。无论您是否在数据库中创建了外键,这些都可以正常工作。