Laravel,当数据库为空时,I';我得到了错误,否则不是,但我必须使用这个
使用此代码时,如果数据库为空,则得到未定义的偏移量:0。你怎么能写这个?我应该使用if或类似的工具吗?真的吗?你应该正确地配置你的关系,这样你就可以Laravel,当数据库为空时,I';我得到了错误,否则不是,但我必须使用这个,laravel,undefined,offset,Laravel,Undefined,Offset,使用此代码时,如果数据库为空,则得到未定义的偏移量:0。你怎么能写这个?我应该使用if或类似的工具吗?真的吗?你应该正确地配置你的关系,这样你就可以 $employee = Employee::where('user_id', Auth::user()->id)->get(); foreach (Company::all() as $company) { if ($com
$employee = Employee::where('user_id', Auth::user()->id)->get();
foreach (Company::all() as $company)
{
if ($company->id == $employee[0]->company_id && $company->employee_active === 1)
{
$event->menu->add([
'text' => 'Contracten',
'url' => 'dashboard/contracts',
'icon' => 'file-text',
'submenu' => [
[
'text' => 'Contract opzetten',
'url' => 'dashboard/contracts/create',
'icon_color' => 'red',
]
]
]);
}
}
但在您的情况下,您可以将第一行更改为
$companies = Company::all();
foreach($companies as $company){
foreach($company->employees as $employee){
if($employee->active){
....
}
}
}
它将返回一个
Employee
对象集合,而不是一个数组,因此您不需要使用[index]
来获取第一个对象。@Joe解决方案是正确的。您可以快速加载公司和员工,以避免N+1查询问题。这个案例有一个官方的例子:
您应该将所有的
$company
逻辑放在一个简单的empty
检查如果(!empty($employee)){//那么您的$employee[0]逻辑将有意义}
我应该放在if(!empty($employee))中吗{在foreach内部还是外部?您在这里的逻辑是什么?如果连接用户的公司将employee\u active
属性设置为1=>add-in菜单?循环遍历所有公司,然后获取所有员工,这是一个糟糕的解决方案。
$employee = Employee::where('user_id', Auth::user()->id)->first();