在 Laravel 8 中进行搜索后,如何在我的 "empleados" 数据表中显示相关表的名称?
How do I show the name of the related tables in my "empleados" datatable after doing a search in Laravel 8?
对不起我的语法,英语不是我的母语。
我的数据 table 在不进行任何搜索时工作正常。但是,当我使用字段 nombre 进行搜索时,出现了这个错误:
Undefined property: stdClass::$departamento (View: /Users/xxx/Sites/contablerd/resources/views/rrhh/empleado/index.blade.php)
这是我在table上方的“高级搜索”:
<form action="#" method="GET">
<h3>Busqueda Avanzada</h3><br>
<div class="row">
<div class="row g-2">
<div class="col-md">
<div class="form-floating">
<input type="nombre" class="form-control" id="nombre" name="nombre" placeholder="" value="">
<label for="nombre">Nombre</label>
</div>
</div>
</div>
</div><br>
<input type="submit" value="Search" class="btn btn-secondary">
</form>
这是我使用 foreach 的代码部分。当我不使用“高级搜索”时,这部分工作正常 (rrhh/empleado/index.blade.php):
@foreach($empleados as $empleado)
<tr>
<td>{{$empleado->id}}</td>
<td>{{$empleado->nombre}}</td>
<td>{{$empleado->apellido}}</td>
<td>{{$empleado->departamento->det}}</td>
<td>{{$empleado->cargo->det}}</td>
<td>{{$empleado->nomina->det}}</td>
<td>{{number_format($empleado->sueldo,2)}}</td>
<td>{{number_format($empleado->ars_empleado+$empleado->afp_empleado,2)}}</td>
<td>{{number_format($empleado->sueldo-($empleado->ars_empleado-$empleado->afp_empleado),2)}}</td>
<td>
<a class="btn btn-info" href="/empleado/{{$empleado->id}}/edit">Editar</a>
<button class="btn btn-danger">Borrar</button>
</td>
</tr>
@endforeach
这是我的索引方法,我确认是否有任何更改查询的请求 (EmpleadoController.php):
public function index(Request $request)
{
$empleados = \DB::table('empleados');
if($request->input('nombre')){
$empleados = $empleados->where('nombre', 'LIKE', "%".request('nombre')."%");
$empleados = $empleados->get();
}else{
$empleados = Empleado::all();
}
return view('rrhh.empleado.index',
[
'empleados'=>$empleados
]);
}
所以当我进行搜索时,出现了上述错误。我在 Empleado.php 模型中得到了我所有的关系。
我也想问一下,这样的做法对吗?
提前致谢,祝您今天愉快。
首先,您是否确定了生成此错误的代码行Undefined property: stdClass::$departamento
?
其次,建议在控制器中使用紧凑而不是数组,就像那样
public function index(Request $request)
{
$empleados = \DB::table('empleados');
if($request->input('nombre')){
$empleados = $empleados->where('nombre', 'LIKE', "%".request('nombre')."%");
$empleados = $empleados->get();
}else{
$empleados = Empleado::all();
}
return view('rrhh.empleado.index',compact('empleados'));
}
如果您的模型有问题,您需要在此处分享以查看您的关系
为 departamento
、cargo
和 nomina
关系添加预加载并使用基于模型的查询,使用 DB
将无法访问您的关系。
public function index(Request $request)
{
if($request->has('nombre')) {
$empleados = Empleado::with(['departamento', 'cargo', 'nomina'])->where('nombre', 'LIKE', '%' . $request->get('nombre') . '%')->get();
} else {
$empleados = Empleado::all();
}
return view('rrhh.empleado.index', ['empleados' => $empleados]);
}
对不起我的语法,英语不是我的母语。
我的数据 table 在不进行任何搜索时工作正常。但是,当我使用字段 nombre 进行搜索时,出现了这个错误:
Undefined property: stdClass::$departamento (View: /Users/xxx/Sites/contablerd/resources/views/rrhh/empleado/index.blade.php)
这是我在table上方的“高级搜索”:
<form action="#" method="GET">
<h3>Busqueda Avanzada</h3><br>
<div class="row">
<div class="row g-2">
<div class="col-md">
<div class="form-floating">
<input type="nombre" class="form-control" id="nombre" name="nombre" placeholder="" value="">
<label for="nombre">Nombre</label>
</div>
</div>
</div>
</div><br>
<input type="submit" value="Search" class="btn btn-secondary">
</form>
这是我使用 foreach 的代码部分。当我不使用“高级搜索”时,这部分工作正常 (rrhh/empleado/index.blade.php):
@foreach($empleados as $empleado)
<tr>
<td>{{$empleado->id}}</td>
<td>{{$empleado->nombre}}</td>
<td>{{$empleado->apellido}}</td>
<td>{{$empleado->departamento->det}}</td>
<td>{{$empleado->cargo->det}}</td>
<td>{{$empleado->nomina->det}}</td>
<td>{{number_format($empleado->sueldo,2)}}</td>
<td>{{number_format($empleado->ars_empleado+$empleado->afp_empleado,2)}}</td>
<td>{{number_format($empleado->sueldo-($empleado->ars_empleado-$empleado->afp_empleado),2)}}</td>
<td>
<a class="btn btn-info" href="/empleado/{{$empleado->id}}/edit">Editar</a>
<button class="btn btn-danger">Borrar</button>
</td>
</tr>
@endforeach
这是我的索引方法,我确认是否有任何更改查询的请求 (EmpleadoController.php):
public function index(Request $request)
{
$empleados = \DB::table('empleados');
if($request->input('nombre')){
$empleados = $empleados->where('nombre', 'LIKE', "%".request('nombre')."%");
$empleados = $empleados->get();
}else{
$empleados = Empleado::all();
}
return view('rrhh.empleado.index',
[
'empleados'=>$empleados
]);
}
所以当我进行搜索时,出现了上述错误。我在 Empleado.php 模型中得到了我所有的关系。
我也想问一下,这样的做法对吗?
提前致谢,祝您今天愉快。
首先,您是否确定了生成此错误的代码行Undefined property: stdClass::$departamento
?
其次,建议在控制器中使用紧凑而不是数组,就像那样
public function index(Request $request)
{
$empleados = \DB::table('empleados');
if($request->input('nombre')){
$empleados = $empleados->where('nombre', 'LIKE', "%".request('nombre')."%");
$empleados = $empleados->get();
}else{
$empleados = Empleado::all();
}
return view('rrhh.empleado.index',compact('empleados'));
}
如果您的模型有问题,您需要在此处分享以查看您的关系
为 departamento
、cargo
和 nomina
关系添加预加载并使用基于模型的查询,使用 DB
将无法访问您的关系。
public function index(Request $request)
{
if($request->has('nombre')) {
$empleados = Empleado::with(['departamento', 'cargo', 'nomina'])->where('nombre', 'LIKE', '%' . $request->get('nombre') . '%')->get();
} else {
$empleados = Empleado::all();
}
return view('rrhh.empleado.index', ['empleados' => $empleados]);
}