我的问题是,我想要注册用户使用Laravel图书馆的高图表发布的促销活动的数量,问题是我可以让你打印用户的名字。但我无法让他印出他的出版物总数。
我的代码:
$users = User::select('nombre_empresa')->WhereIn('role_id',[2,3])->get();
foreach ($users as $user) {
$empresas[] = $user->nombre_empresa;
$id[] = $user->id;
$publicaciones[] = Promociones::where('user_id',$id)->get()->count();
}
$chart = new TotalPromociones;
$chart->title('Total de promociones publicadas por socios');
$chart->labels($empresas);
$chart->dataset('Numero de promociones','bar', ([$publicaciones]));
$chart->dataset('Total de promociones publicadas = '.$total_promociones,'bar',[]);发布于 2019-06-06 04:37:06
对代码进行如下更改:
$users = User::WhereIn('role_id',[2,3])->pluck('nombre_empresa', 'id');
$empresas = [];
$publicaciones = [];
foreach ($users as $key => $val) {
$empresas[] = $val;
$publicaciones[] = Promociones::where('user_id',$key)->count();
}
$chart = new TotalPromociones;
$chart->title('Total de promociones publicadas por socios');
$chart->labels($empresas);
$chart->dataset('Numero de promociones','bar', ([$publicaciones]));
$chart->dataset('Total de promociones publicadas = '.$total_promociones,'bar',[]);发布于 2019-06-06 04:49:10
Laravel提供了一种计算关系结果数量的方法。
如果您想在不实际加载关系的情况下计算来自关系的结果数量,则可以使用withCount方法,该方法将在生成的模型上放置一个{relation}_count列。例如:
$posts = App\Post::withCount('comments')->get();
foreach ($posts as $post) {
echo $post->comments_count;
}在你的例子中,这会是这样的:
$users = User::select('nombre_empresa')->withCount('promociones')->WhereIn('role_id',[2,3])->get();
foreach ($users as $user) {
$empresas[] = $user->nombre_empresa;
$id[] = $user->id;
$publicaciones[] = $user->promociones_count;
}传递给withCount()方法的值应该与User模型中给出的与Promociones的关系的方法名称相同。
https://stackoverflow.com/questions/56470852
复制相似问题