16. Laravel 模型关系:一对多
Laravel 模型关系:一对多
一对多:一篇文章可以有多个评论,一个评论只属于一篇文章。
表结构
# articles: id, title, content
# comments: id, content, article_id
模型配置
// App\Article
public function comments(){
return $this->hasMany('App\Comment');
}
// App\Comment
public function article(){
return $this->belongsTo('App\Article');
}
使用
增
$article = App\Article::find(1);
$article->comments()->create(['content' => '上海在哪儿']);
删
$article = App\Article::find(1);
$article->comments()->delete();
改
$comment = App\Comment::find(11);
$article = App\Article::find(1);
$comment->article()->associate($article);
$comment->save();
$comment = App\Comment::find(1);
$comment->article()->update(['title' => '广州在哪儿']);
查
$comments = App\Article::find(1)->comments;
$comments = App\Article::find(1)->comments()->where('content', 'like', '%教学%')->get();
$article = App\Comment::find(1)->article;
// 延迟加载
App\Ariticle::with('comments')->find([1,2])
定制模型
指定 comments 表中的外键字段名称
# articles: id, title, content
# comments: id, content, arti_id
// App\Article
public function comments(){
return $this->hasMany('App\Comment', 'arti_id');
}
指定 comments 表中的外键对应 articles 表中的字段名称
# articles: id, title, content
# comments: id, content, article_title
// App\Article
public function comments(){
return $this->hasMany('App\Comment', 'article_title', 'title');
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?