这是 MariaDB 中的工作 SQL:
SELECT * FROM ticket_categories
WHERE cat_name LIKE '%test%'
AND
( cat_parent_id = 236
OR cat_id = 236
OR cat_parent_id
IN (SELECT cat_id FROM ticket_categories Where cat_parent_id = 236)
)
到目前为止我在 Laravel Query 中的内容:
$categoryList->where('ticket_categories.cat_name','like','%'.$request->input('name_filter').'%')
->where(function($query) use($request) {
query->where('ticket_categories.cat_parent_id', '=', $request->input('departments_filter'));
$query->orWhere('ticket_categories.cat_id','=', $request->input('departments_filter'));
$query->orWhereIn('ticket_categories.cat_parent_id', function($query1) use ($request) {
$query1->select('cat_id')
->from(with(new TicketCategory)->getTable())
->where('cat_parent_id', '=', $request->input('departments_filter'));
});
});
我的代码现在可以正常工作,但是您可以寻找更简洁的人们的答案。