一对多关系算是比较常用的一种关联关系了,关于一对多我们可以用 文章对应评论 来举例:一篇文章可以有多个评论,但是一个评论只属于一篇文章。 这就是一对多关系。
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'); }