亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel - 總和搜索帖子價格

Laravel - 總和搜索帖子價格

PHP
一只斗牛犬 2021-11-19 15:12:19
如何僅對我搜索過的帖子求和?我有一個搜索頁面,搜索是為了日期,所以我按日期搜索帖子。當我輸入我想要的日期時,我需要總結我的搜索功能為該日期找到的所有帖子價格。這是我的代碼。這是我的搜索web.php:Route::get('/search', 'PagesController@search');Route::post('/search',function(){    $q = Input::get ( 'q' );    $post = auth()->user()->posts()->where('ime','LIKE', '%'.$q.'%')->get();    if(count($post) > 0)        return view('search')->withDetails($post)->withQuery ( $q );    else return view ('search')->withMessage('Nema rezultata Va?e pretrage. Probajte ponovo!');});這是我的搜索功能PagesController:public function search(){        $user_id = auth()->user()->id;        $user = User::find($user_id);        return view('search')->with('posts', $user->posts);    }這是我search.blade.php的表頁腳在哪里應該總結我的帖子價格:<tfoot>   <tr>      <th>UKUPAN IZNOS:&nbsp;&nbsp;{{ Auth::user()->posts()->sum('cijena') }}&euro;</th>                  </tr></tfoot>但是當我輸入它時,它會匯總所有帖子的價格,而我只需要搜索到的帖子。有什么建議?
查看完整描述

1 回答

?
holdtom

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'));

// ...


查看完整回答
反對 回復 2021-11-19
  • 1 回答
  • 0 關注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號