如何使用 laravel ORM eloquent 5.8 选择我数据库中每个促销活动的总下载量?
Posted
技术标签:
【中文标题】如何使用 laravel ORM eloquent 5.8 选择我数据库中每个促销活动的总下载量?【英文标题】:How to select the total downloads of each promotion that I have in my database, with laravel ORM eloquent 5.8? 【发布时间】:2019-06-30 20:25:00 【问题描述】:使用 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',[]);
所需的图形输出:
【问题讨论】:
您确定$nombres
是用用户ID 键入的吗?
【参考方案1】:
我认为问题出在这一行
$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();
【讨论】:
感谢您朋友的建议,他们给了我解决我问题的想法这是解决方案$descargadas[] = Promociones::where('id',$key)->pluck('veces_cajeadas');
以上是关于如何使用 laravel ORM eloquent 5.8 选择我数据库中每个促销活动的总下载量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Eloquent ORM laravel 中获取最后一个插入 ID
如何在 Laravel Eloquent ORM 中获取插入的多行数据
如何在不使用Eloquent ORM时构建Laravel应用程序
laravel Eloquent ORM - 如何获得编译查询?