写了公司签到按钮,上班前点击签到,下班点击下班签到,自动记录时间,按照工作时间结算工资!出错了!!
最终目标登陆后 点击上班签到 ,只要已经签到 就显示下班签到;
点击签到create控制器自动维护created_at时间 ;下班签到update控制器,自动维护updated_at时间;
就一个数据表,
id(自增id)
user_id(用户id)
sstore_id(所属店面id,考虑到多家店面)
sip(签到时候的ip)
estore_id(离开签到的id 也就是下班点击一下)
esip(离开的时候ip)
created_at(签到时间)
updated_at(离开时间也就是下班时间)
public function create(Request $request)
{
return view('attendance_create');
}
public function store(Request $request)
{
$request->user()->attendances()->create([
'sstore_id' => 1, //所属店面id会记录在数据表
'sip' => $request->getClientIp(),//记录当前用户ip
]);
return redirect()->back();
}
public function update(Request $request, Attendance $attendance)
{
$attendance->update([
'estore_id' => 1,//下班签到的店面id
'eip' => $request->getClientIp(),//下班记录当前用户ip
]);
return redirect()->back();
}
因为这个签到没有单独页面只是在 首页导航上面有个 按钮,更新的时候需要一个得到数据库签到的id;
@if (Auth::user()->attendances()->orderBy('created_at', 'desc')->first()->estore_id)
<form action="{{route('attendance.store')}}" onsubmit="return confirm('你确定签到吗?')" method="post">
@csrf
<input type="submit" class="btn btn-success" value="上班签到">
</form>
@else
<form action="{{route('attendance.update',Auth::user()->attendances()->orderBy('created_at', 'desc')->first()->id)}}" onsubmit="return confirm('离开下班吗?离开后无法修改')" method="post">
@csrf
@method('put')
<input type="submit" class="btn btn-success" value="离开签到">
</form>
@endif
问题:退出之后从新登陆新的用户就提示当前用户没有estore_id 也就是找不到estore_id因为新用户没有签到记录。
请问下下面这个代码是否有其他判断方式?问题应该处在first() 查找不到就报错!
Auth::user()->attendances()->orderBy('created_at', 'desc')->first()->estore_id
因为是个后台系统 顶部导航栏中要加入这个签到 ,按照这个逻辑我需要在每个逻辑里面都要写入查询签到的这个代码,因为每个页面都要使用顶部导航,!
或者您有更好的解决方案/感谢!!
推荐文章: