微信扫一扫打赏支持

后盾网lavarel视频项目---模型一对多关联简单实例

后盾网lavarel视频项目---模型一对多关联简单实例

一、总结

一句话总结:

在模型中定义一个方法来设置一对多关联:return $this->hasMany(Video::class);
<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class Lesson extends Model
{
    /**
     * 与视频表模型的一对多关联
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    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 App\Model;

use Illuminate\Database\Eloquent\Model;

class Video extends Model
{
    protected $guarded=[];
}

 

app/Model/Lesson.php

 1 <?php
 2 
 3 namespace App\Model;
 4 
 5 use Illuminate\Database\Eloquent\Model;
 6 
 7 class Lesson extends Model
 8 {
 9     /**
10      * 与视频表模型的一对多关联
11      * @return \Illuminate\Database\Eloquent\Relations\HasMany
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、结果

 

成功获得需要的两条数据

 

 
posted @ 2019-09-19 00:55  范仁义  阅读(228)  评论(0编辑  收藏  举报