У меня есть таблица с именем project_cases
, и у нее есть дочерняя таблица defects
.
Я создал таблицу данных и хочу заполнить ее данными project_cases
, но прямо сейчас мне нужно чтобы добавить другие данные в мой объект запроса, которые подсчитывают, сколько дефектов связано с конкретным project_cases
и где его статус не resolved
или закрытый . I'm not sure how to use
DB :: raw` запрос и прямо сейчас его ошибки выдачи. Ниже мой код:
Запрос кейса:
public function index($proj_id)
{
$cases = ProjectCase::join('projects', 'projects.id', '=', 'project_cases.project_id')
->join('units', 'projects.id', '=', 'units.project_id')
->join('defects', 'defects.case_id', '=', 'project_cases.id')
->where('projects.id', $proj_id)
->select([
'projects.id',
'units.unit_no',
'project_cases.status',
'project_cases.created_at',
\DB::raw("count(defects.id) as unresolvedDefectsCount whereNot defects.status='resolved' and whereNot defects.status='closed'"), //Not Working
])->get();
dd($cases);
return view('dev-admin.projects.cases.index', ['cases' => $cases, 'proj_id' => $proj_id]);
}
ОБНОВЛЕНИЕ:
Как я могу реализовать приведенный ниже код в запрос DB::Raw
? Это мой предыдущий код, который работает, но он не оптимизирован, так как требует выполнения запроса для каждого project_cases
объекта строки
public function getDataTableCases(Request $request, $proj_id)
{
$cases = ProjectCase::with('project', 'unit')->where('project_id', $proj_id);
return DataTables::of($cases)
->addIndexColumn()
->addColumn('unresolvedDefectsCount', function ($row) {
$unresolvedDefectsCount = Defect::where('case_id', $row->id)->whereNotIn('status', [DefectStatus::RESOLVED, DefectStatus::CLOSED])->count();
return $unresolvedDefectsCount;
})
->make(true);
}