簡體   English   中英

如何使用laravel ORM雄辯的5.8選擇數據庫中每個促銷的總下載量?

[英]How to select the total downloads of each promotion that I have in my database, with laravel ORM eloquent 5.8?

使用laravel,我需要在圖表中顯示兌換促銷的次數。 我可以獲取開始會話的每個用戶發布的促銷信息,但是我需要您將這些數據放在圖表中。 非常感謝您的幫助。


當前代碼:

    $nombres = Promociones::where('user_id',Auth::user()->id)->pluck('nombre_promocion', 'id');

    $promociones = [];
    $descargadas = [];

    foreach ($nombres as $key => $val)
    {
        $promociones[] = $val;
        $descargadas[] = Promociones::where('user_id',$key)->count();
    }  

    $chart = new UserPromociones;
    $chart->title(' Promociones publicadas ');
    $chart->labels($promociones);
    $chart->dataset('Numero de promociones','bar', ($descargadas));
    $chart->dataset('Total de promociones publicadas = '.$total_promociones,'bar',[]);

所需圖形輸出:

該圖

我認為問題出在這條線

$descargadas[] = Promociones::where('user_id',$key)->count();

因為您只尋找匹配數組索引的user_id!

它應該像

$descargadas[] = Promociones::where('user_id',$val)->count();

要么

$descargadas[] = Promociones::where('user_id',$val->id)->count();

即使這項工作不是最好的方法,但最糟糕的事情是,但是數據庫查詢處於循環中,這太可怕了

如果數據不是那么大,您可以在foreach之前做類似的事情

$promociones = collect(Promociones::all()->toArray());

這會將模型提取到集合中,然后任何where子句都將在集合中進行搜索,並且每次都不需要數據庫查詢。

 $promociones = collect(Promociones::all()->toArray());

 foreach ($nombres as $key => $val)
    {
        $promociones[] = $val;
        $descargadas[] = $promociones->where('user_id',$val->any_filed)->count();
    }  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM