Laravel5.1 模型 --一对多关系

一对多关系算是比较常用的一种关联关系了,关于一对多我们可以用 文章对应评论 来举例:一篇文章可以有多个评论,但是一个评论只属于一篇文章。 这就是一对多关系。

 


 

 1 实现一对多关系

我们先来准备两个模型,一个是文章表,另一个是评论表。其中评论表声明外键。

 1.1 评论表结构

    public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->integer('article_id');  // 外键
            $table->timestamps();
        });
    }

 

 1.2 编写关系

首先我们来声明Comment的:

class Comment extends Model
{
    protected $fillable = ['title', 'body', 'article_id'];

    public function article()
    {
        /**
         * 第二个参数是外键,我们的外键是article_id 如果我们省略了外键 laravel会自动以方法名article 连上_id来组成外键:article_id
         * 第三个参数是我们的外键对应article表的那个键,我们这里是id,可以省略。
         */
        return $this->belongsTo(Article::class, 'article_id', 'id');
    }
}

然后是Article模型:

    public function comments()
    {
        return $this->hasMany(Comment::class, 'article_id', 'id');
    }

 

posted @ 2017-09-18 23:28  Sky_sunkang  阅读(294)  评论(0编辑  收藏  举报