1 回答

TA貢獻1805條經驗 獲得超10個贊
...但是當我輸入它時,它總結了我所有帖子的價格,我只需要搜索到的
這是因為您認為有這條線:
<th> ... {{ Auth::user()->posts()->sum('cijena') }} ... </th>
這是直接執行不同的查詢以獲取cijena. 因此,無論您是否限制結果,這都會使輸出保持相同的值。這個不同的查詢對其余的查詢值有任何影響。
您可以做的是在主查詢中計算該值并將其返回到視圖:
Route::post('/search', function () {
$q = Input::get('q');
$posts = auth()->user()->posts()->where('ime', 'LIKE', '%' . $q . '%')->get();
if (count($posts) > 0)
{
$sum = $posts->sum('cijena'); // <---
return view('search')->withDetails($posts)->withTotal($sum);
} // ^^^^^^^^^^^^^^^^^
else
{
return view('search')->withMessage('Your error message goes here!');
}
});
所以現在您可以訪問$total刀片文件中的一個額外變量:
<th> ... {{ $total) }} ... </th>
此外,無需為同一操作定義兩條路線,您可以通過一種簡單的方法減少所有路線。此外,您不應從前端執行查詢。請執行以下操作:
# web.php
Route::get('/search', 'PagesController@search');
然后在您的控制器中:
# PageController.php
use Illuminate\Http\Request;
// ...
public function search(Request $request)
{
$posts = auth()
->user()
->posts()
->when($request->has('q'), function ($q) { // first check if there is a query
return $q->where('ime', 'LIKE', '%' . request('q') . '%'); // if so, apply filter
})
->get();
if (count($posts) > 0) // checking if there is enough posts..
{
$sum = $posts->sum('cijena'); // if so get the sum of 'cijena'
return view('search')->withDetails($posts)->withTotal($sum);
} // ^^^^^^^^^^^^^^^^
else
{
return view('search')->withMessage('Your error message goes here!');
}
}
更新
這一行是引發錯誤的那一行:
<p class="searchp">Rezultati va?e pretrage <b> {{$q}} </b>: </p>
這是因為我沒有包含$q變量。只需將其附加到您的回復中,以備不時之需:
// ...
return view('search')->withDetails($posts)->withTotal($sum)->with('q', request('q'));
// ...
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報