一、关联模型(一对多)
1.1 一对多关系
例:一篇文章有多个评论。
由于文章和评论的关系是一对多的关系,所以需要再去创建一个数据表(评论表)。
字段id | 主键 |
---|---|
字段comment | 评论内容 |
字段article_id | 和文章的关系字段,文章id |
迁移文件的创建 php artisan make:migration comment_table
增加属性字段:
public function up()
{
Schema::create('comment', function (Blueprint $table) {
$table->increments('id');
$table->text('comment') -> comment('评论内容');
$table->integer('article_id') -> comment('文章id');
$table->timestamps();
});
}
执行迁移:
php artisan migrate
效果:
创建填充器文件:
php artisan make:seeder CommentTableSeeder
编写填充器文件的代码:
public function run()
{
// 写入数据到comment表中
DB::table('comment') -> insert([
[
'comment' => '阿萨德和济困扶危i哦嗯是的,阿卡卡拉的身份',
'article_id' => rand(1,5)
],
[
'comment' => '圣诞节疯狂辣椒风刀霜剑为哦额陪我',
'article_id' => rand(1,5)
],
[
'comment' => '阿都是会计法;为了李莫愁v男客服即可额',
'article_id' => rand(1,5)
],
[
'comment' => '阿卡戴珊理解范围就那么难吗',
'article_id' => rand(1,5)
],
]);
}
执行填充器
php artisan db:seed --class=CommentTableSeeder
效果:
创建模型:
php artisan make:model Comment
案例:查询每个文章(主)下所有的评论(从)。
关联关系的编写:
public function 被关联的模型名小写() {
return $this -> hasMany('需要关联模型的命名空间', '被关联模型的关系字段', '本模型的关系字段')
}
文章模型定义关联评论方法(一对多):
// 定义评论模型
public function rel_comment() {
return $this -> hasMany('App\Models\Comment', 'article_id', 'id');
}
创建路由:
定义方法:
// 关联模型 一对多
public function yiduiduo () {
// 查询文章
$data = Article::all();
// 循环
foreach($data as $key => $value) {
echo '文章id:'. $value -> id . '<br/>';
echo '文章名称:'. $value -> article_name . '<br/>';
// 循环输出评论
foreach($value -> rel_comment as $k => $v) {
echo '  '.$v -> comment . '<br/>';
}
echo '<hr/>';
}
}
效果:
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。
转载:https://blog.csdn.net/weixin_44103733/article/details/115909009
查看评论