场景:用户(users)一个表单,存的id,加班(overtime)一个表单,存的user_id.
建立外键的时候要在overtime表里面建
最后两项,更新和删除我不知道怎么选择
我的需求就是记录表里面没有name值,每次查询都要关联才能查到name值,传到模板中
然后再\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的值了。这种效率比较高,因为查询的时候命中索引了
- 资料岁寒博客