Laravel雄辩与条件



有人能帮我吗?

我有这样的口才

$data = DocumentFile::with(['document_folder', 'document_request.user.profile'])
->where('isactive', true)
->when($request->search, function($query, $search) {
$query->where('name', 'ilike', '%'.$search.'%');
})
->orderBy('updated_at', 'DESC')
->paginate($paginate)

但是它没有显示我想要的数据。


我有三个这样的模型:

  • DocumentFolder,字段:id, name
  • DocumentFile,字段:id, name, is_private, is_active, created_by, updated_at, document_folder_id
  • DocumentRequest,字段:id, user_id, document_file_id

1 DocumentFolder文档文件,1 DocumentFile有很多DocumentRequest


我想显示带有条件的数据:

如果<<ol>
  • strong> DocumentFile是_active = true,显示它,如果是_active = false
  • 如果<<li> strong> DocumentFileis_private = false显示如果<<li> strong> DocumentFileis_private = true,必须检查DocumentRequestDocumentRequest,如果是则显示,如果否则不显示
  • 如果用户登录user_idcreated_byDocumentFile,如果是,则显示
  • 数据可以通过DocumentFile进行搜索名称
  • 排序的数据updated_at =>fromDocumentFile
  • <分页strong>DocumentFile
  • 查询逻辑分组

    $data = DocumentFile::with(['document_folder', 'document_request.user.profile'])
    ->where(function($query){
    $query->where('id_active', true) // 1
    ->orWhere('id_private', false) // 2
    ->orWhere('created_by', auth()->user()->id); // 3 and 4
    })
    ->when($request->search, function($query, $search) {
    $query->where('name', 'ilike', '%'.$search.'%');
    })
    ->orderByDesc('updated_at')
    ->paginate($paginate);
    

    最新更新