后盾网lavarel视频项目---模型一对多关联简单实例
一、总结
一句话总结:
在模型中定义一个方法来设置一对多关联:return $this->hasMany(Video::class);
<?php namespace AppModel; use IlluminateDatabaseEloquentModel; class Lesson extends Model { /** * 与视频表模型的一对多关联 * @return IlluminateDatabaseEloquentRelationsHasMany */ public function videos(){ return $this->hasMany(Video::class); } }
1、控制器中怎么取设置了一对多的模型的数据?
先找到lesson数据(Lesson::find(1)),然后找到一对多设置(->videos()),最后取数据(->get()):$d=Lesson::find(1)->videos()->get();
public function create() { $d=Lesson::find(1)->videos()->get(); dd($d->toArray()); return view('admin.lesson.create'); }
2、toArray方法将集合数据转成数组?
$d=Lesson::find(1)->videos()->get(); dd($d->toArray());
public function create() { $d=Lesson::find(1)->videos()->get(); dd($d->toArray()); return view('admin.lesson.create'); }
二、模型一对多关联简单实例
1、数据表
lessons表中一条记录对应videos表中多条记录
lessons表
videos表
2、模型
app/Model/Video.php
<?php namespace AppModel; use IlluminateDatabaseEloquentModel; class Video extends Model { protected $guarded=[]; }
app/Model/Lesson.php
1 <?php 2 3 namespace AppModel; 4 5 use IlluminateDatabaseEloquentModel; 6 7 class Lesson extends Model 8 { 9 /** 10 * 与视频表模型的一对多关联 11 * @return IlluminateDatabaseEloquentRelationsHasMany 12 */ 13 public function videos(){ 14 return $this->hasMany(Video::class); 15 } 16 }
第10行:一对多设置的核心代码
lavarel参考手册位置:https://learnku.com/docs/laravel/5.7/eloquent-relationships/2295#one-to-many
3、控制器
app/Http/Controllers/Admin/LessonController.php
1 public function create() 2 { 3 $d=Lesson::find(1)->videos()->get(); 4 dd($d->toArray()); 5 return view('admin.lesson.create'); 6 }
第3行:videos方法是Lesson模型中定义的
第4行:toArray方法将数据集转成数组
4、结果
成功获得需要的两条数据