我需要根据登录的用户,显示不同的记录/文件。每个用户将被分配不同的记录/文件来管理。虽然可以用搜索栏过滤它们,但出于安全和整洁的考虑,每个人都可以看到分配给他们的那些。从哪里做这件事更方便?
这是我的系统的索引视图,其中只有分配给用户的记录/文件应该出现
我给你留下了控制器索引视图的一部分
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsSiniestro;
use IlluminateSupportFacadesDB;
//mail
use AppMailContactanosMailable;
use IlluminateSupportFacadesMail;
class SiniestroController extends Controller
{
function __construct()
{
$this->middleware('permission:ver-siniestro|crear-siniestro|editar-siniestro|borrar-siniestro')->only('index');
$this->middleware('permission:crear-siniestro', ['only'=>['create','store']]);
$this->middleware('permission:editar-siniestro|derivar-siniestro', ['only'=>['edit','update']]);
$this->middleware('permission:borrar-siniestro', ['only'=>['destroy']]);
}
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$siniestros = Siniestro::paginate(50);
//return DB::select('select localidad from siniestros'); //---> Devuelve los datos de la columna estados
return view('siniestros.index', compact('siniestros'));
$now = Carbon::now();
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
视图blade.index
@extends('layouts.app')
@section('content')
<section class="section">
<div class="section-header">
<h3 class="page__heading">Siniestros</h3>
</div>
<div class="section-body">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
@can('crear-siniestro')
<a class="btn btn-primary" href="{{ route('siniestros.create') }}">Nuevo</a>
@endcan
<table class="table table-sm m-1 p-1 table-bordered table-hover table-striped tablita" style="width:100%">
<thead style="background-color:hsl(213, 99%, 49%)">
<th style="display: none;">ID</th>
<th style="color:#fff;">Siniestro</th>
<th style="color:#fff;">Coordinador</th>
<th style="color:#fff;">Actualizado</th>
<th style="color:#fff;">Patente</th>
<th style="color:#fff;">Cliente</th>
<th style="color:#fff;">Fecha ingreso</th>
<th style="color:#fff;">Fecha gestión</th>
<th style="color:#fff;">Captura de pantalla</th>
<th style="color:#fff;">Estado</th>
<th style="color:#fff;">Modalidad</th>
<th style="color:#fff;">Observaciones</th>
@can('derivar-siniestro')
<!-- <th style="color:#fff;">Screenshot</th> -->
<th style="color:#fff;">Dirección</th>
<th style="color:#fff;">Localidad</th>
<th style="color:#fff;">Inspector</th>
<th style="color:#fff;">Motivo</th>
<th style="color:#fff;">Enviar Orden</th>
@endcan
<th style="color:#fff;">Acciones</th>
</thead>
<tbody>
@foreach ($siniestros as $siniestro)
<tr>
<td style="display: none;">{{ $siniestro->id }}</td>
<td>{{ $siniestro->siniestro }}</td>
<td>{{ $siniestro->creator->name }}</td>
<td>{{ $siniestro->editor->name }}</td>
<td>{{ $siniestro->patente }}</td>
<td>{{ $siniestro->cliente }}</td>
<td>{{ $siniestro->created_at }}</td>
<td>{{ $siniestro->updated_at }}</td>
<td><img alt="img" src="/img/{{ $siniestro->imagen }}" width="100px"></td>
<td>{{ $siniestro->estado }}</td>
<td>{{ $siniestro->modalidad }}</td>
<td>{{ $siniestro->observaciones }}</td>
@can('derivar-siniestro')
<!-- <td><a href="{{ $siniestro->url }}" target="blank_" >Ver documento</a></td> -->
<td>{{ $siniestro->direccion }}</td>
<td>{{ $siniestro->localidad }}</td>
<td>{{ $siniestro->inspector }}</td>
<td>{{ $siniestro->motivo }}</td>
<td>{{ $siniestro->enviarorden }}</td>
@endcan
<td>
<form action="{{ route('siniestros.destroy',$siniestro->id) }}" method="POST">
@can('editar-siniestro')
<a class="btn btn-outline-success btn-sm" href="{{ route('siniestros.edit',$siniestro->id) }}">Editar</a>
@endcan
@csrf
@method('DELETE')
@can('borrar-siniestro')
<button type="submit" class="btn btn-outline-danger btn-sm">Borrar</button>
@endcan
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<!-- Paginacion a la derecha -->
<div class="pagination justify-content-end">
{!! $siniestros->links() !!}
</div>
</div>
</div>
</div>
</div>
</div>
</section>
模型<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
use WildsideUserstampsUserstamps;
class Siniestro extends Model
{
use HasFactory;
use Userstamps;
protected $fillable = ['created_by', 'imagen', 'updated_by', 'deleted_by', 'siniestro', 'patente', 'cliente', 'fechaip', 'estado', 'modalidad',
'observaciones', 'fechacierre', 'compania', 'contacto', 'codigoinspeccion', 'inspector', 'direccion', 'localidad', 'telefono', 'motivo', 'link', 'enviarorden', 'email'];
public function archivos()
{
return $this->hasMany(Archivo::class);
}
}
我想到最好的办法是在我的数据库中添加一列,例如,"分配给",并根据值,这将是每个用户的名称(Marcoz Perez, Germán López等),列出的记录/文件。
我想我可以用一个"where"控制器中的语句;但首先,我不知道如何正确使用它……其次,我不知道从那里我是否能得到我想要的结果,注意不同的用户。
如果在hasMany关系中让每个用户都有一个日志的集合,那么您可以只收集与该用户连接的日志。用户可能有这个
// In user model
public function siniestros()
{
return $this->hasMany(Siniestro::class);
}
然后在index()中你可以这样做:
{
// Get the logged in user
$currentUser = Auth::user();
// Get the user's siniestros (whatever that means ;-) )
$siniestros = $currentUser->siniestros;
return view('siniestros.index', compact('siniestros'));
}
在数据库中,您可以向sinietros表添加user_id列(这是可空的,因此没有id意味着未分配)。然后hasMany函数会找到这些。或者你也可以用数据透视表做一个多数据透视表。如果数据库只能分配给0或1个用户,我会选择一个可空的user_id列。
你可以把这个列命名为"assignd_user_id"但是,当您在模型中定义关系时,您需要指定此列名。