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

后盾网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、结果

成功获得需要的两条数据

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/11546517.html