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 关注
- 138 浏览
添加回答
举报