laravel关联模型的使用

场景:用户(users)一个表单,存的id,加班(overtime)一个表单,存的user_id.
建立外键的时候要在overtime表里面建
最后两项,更新和删除我不知道怎么选择
我的需求就是记录表里面没有name值,每次查询都要关联才能查到name值,传到模板中

Paste_Image.png

然后再\App\User的Model表里面写关联函数,比如overtime

public function overtime()
{
    return $this->hasMany('\App\Overtime','user_id','id');
}

然后就可以在控制器里面使用
比如我的场景是,用户id是17,overtime表里面有两个请假记录,他们的user_id都是17
我要得到的结果是 传入用户ID(比如17),查到关联的请假信息

public function test()
{
    $overtime = \App\StaffUsers::find(17)->overtime;  //这个overtime就是刚才模型里面的函数.取出来的是所有关联的信息
  //注意,我这里测试只能使用find($id),不能使用where.所以我们可以根据用户穿过来的信息查找出id再执行关联模型
    foreach ($overtime as $user){
    //遍历之后,得到的是每条用户的信息
        echo  ($user->id);  //我的两条请假记录id是12,13
    }

}

注意:这种关联模型查询比较方便,但是你单独删除某个表的时候,也要同时删除关联的表才行

如果不使用关联模型,可以使用链表查询

 $datas = DB::table('overtime as a')
    ->leftJoin('staff_users as b', 'a.user_id','=','b.id' )
    ->select('a.id','b.name','a.create_time','a.end_time')
    ->get()->toArray();
或者先通过user_id,查出name 然后将name存入$datas数组 $datas['name'] = $name,这时候在模板中就可以找到name的值了。这种效率比较高,因为查询的时候命中索引了
image.png
image.png
image.png
image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容