我是 laravel 的新手,我需要為資料庫創建一個查詢,
$query = Deal::query();
我想使用 wherehas 運算子。這是我作業的代碼。
else if ($group_by == 'precedence') {
if($get_deals_for == 'noprecedence'){
$get_deals_for = 0;
}
$precedenceStatus = $get_deals_for;
$query-> where('precedence', '=', $precedenceStatus);
// \Log::info('The request precedence: '.$precedenceStatus);
}
我也想將此代碼添加到查詢中
if($person) {
$query->whereHas('personnel', function ($subQuery) use ($person) {
$subQuery->where('id', '=', $person);
});
}
所以我需要更改第一個代碼?如何將第一個代碼轉換為 wherehas?第一個代碼來自稱為交易的表,第二部分來自稱為人員的房地產。第二部分在代碼中的其他地方作業,我只需要修復第一部分而不明白在使用中寫什么
我試試這個并在最后一個錯誤}
else if ($group_by == 'precedence') {
if($get_deals_for == 'noprecedence'){
$get_deals_for = 0;
}
$precedenceStatus = $get_deals_for;
$query-> where('precedence', '=', $precedenceStatus)
-> when ($person, function($query) use($person) {
$query->whereHas('personnel', function ($query) use ($person) {
$query->where('id', '=', $person);
});
})
}
uj5u.com熱心網友回復:
有一個方法你可以使用when(,這樣你就可以有更清晰的代碼。第一個引數如果為真,將執行你的條件陳述句。
https://laravel.com/docs/9.x/queries#conditional-clauses
$result = $query
->where('precedence', '=', $precedenceStatus)
->when($person, function ($query) use ($person) {
$query->whereHas('personnel', fn ($q) => $q->where('id', '=', $person));
})
->get();
您還應該能夠在使用 when( 之前清理您的優先代碼,以使整個事情更干凈一些。
uj5u.com熱心網友回復:
在 laravel 中查詢 DB 非常簡單,您只需要執行您想要執行的查詢,然后您只需將其替換為 laravel 助手即可。或者,如果您不明白要使用哪個函式,您可以撰寫原始查詢。使用, DB::raw('write your sql query').
現在大部分時間 whereHad 用于過濾特定模型的資料。首選此鏈接,[Laravel 查詢官方檔案][1] 就像如果您有 1 到 m 關系,那么您可以從一個部分檢索多個物件或從多個物件中檢索一個部分。就像我想過濾用戶所做的許多評論,那我就這樣吧。
$comments = Comment::whereHas('user', function (Builder $query) {
$query->where('content', 'like', 'title%');
})->get();
$comments = 這里將是您要檢索的模型::whereHas('relationship name', function (Builder $query) { $query->where('content', 'like', 'title%'); } )->get();
你也可以在 whereHas 里面寫 whereHas。[1]:https ://laravel.com/docs/9.x/eloquent-relationships#querying-relationship-existence
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/472088.html
標籤:拉拉维尔 laravel-5 雄辩 laravel-8
下一篇:在Laravel8中產生內部部分
