功能: 我正在顯示回應串列(用戶與回應相關),并且我希望能夠按用戶名過濾
我有一個包含用戶 ID 的分配回應表
我正在根據該 ID 將用戶加入此表
我有這些回復的搜索過濾器
我希望能夠按用戶名搜索
有沒有可能做這樣的事情;
$responses = AssignmentResponse::query()->where('assignment_id', '=', $request->assignment)
->with([
'likes',
'user'
]);
//FILTERS
if ($request->queryString) {
$responses->where('user.name', 'LIKE', '%' . $request->queryString . '%');
}
return $responses->get();
uj5u.com熱心網友回復:
只需使用回呼更改關系:
return AssignmentResponse::where('assignment_id', $request->assignment)
->with('likes')
->when(
$request->filled("queryString"),
function ($q) use ($request) {
$q->whereHas("user", fn ($q) => $q->where("name", "like", "%$request->queryString%"))
->with(["user" => fn ($q) => $q->where("name", "like", "%$request->queryString%")]);
}
)
->get()
注意兩者with()和whereHas()用于確保只回傳匹配的值。使用條件子句代替您的if陳述句。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407944.html
標籤:
上一篇:如何將專案從vb轉換為c#?
下一篇:資料透視表關系
