我使用Chart.js来显示每个月的预订数量。这是我的查询。一切正常。我的问题是,如果一个月没有预订,那么它什么也不会显示。没有零值。在图表上,我得到像
图表中显示了三月和六月。.在没有预订的月份中,如何获得零值。
$graph = DB::table('bookings')
->select(DB::raw('MONTHNAME(created_at) as month'), DB::raw("DATE_FORMAT(created_At,'%M %Y') as monthNum"), DB::raw('count(*) as totalbook'))
->groupBy('monthNum')
->orderBy('created_at', 'asc')
->get();
要获得几个月的时间,
@foreach ($graph as $dat)
"{!! $dat->monthNum !!}",
@endforeach`
并获得预订号
@foreach ($graph as $dat)
{!! $dat->totalbook !!},
@endforeach
MySQL不会填写不可用的月份,它只会根据可用的内容进行分组,然后为您提供这些结果。
您可以做的是使用DatePeriod
Laravel的Collection
课程:
$results = DB::table('bookings')
->selectRaw("DATE_FORMAT(created_At,'%Y-%m-01') as monthNum, count(*) as totalbook")
->orderBy('monthNum')
->groupBy('monthNum')
->get();
$results = collect($results)->keyBy('monthNum')->map(function ($item) {
$item->monthNum = \Carbon\Carbon::parse($item->monthNum);
return $item;
});
$periods = new DatePeriod($results->min('monthNum'), \Carbon\CarbonInterval::month(), $results->max('monthNum')->addMonth());
$graph = array_map(function ($period) use ($results) {
$month = $period->format('Y-m-d');
return (object)[
'monthNum' => $period->format('M Y'),
'totalbook' => $results->has($month) ? $results->get($month)->totalbook : 0,
];
}, iterator_to_array($periods));
请注意,我monthNum
在查询中进行了更新,因为它将在以后重新格式化。
另外,您应该为此使用刀片原始标签({!! !!}
),因为它{{ $dat->totalbook }}
绝对可以正常工作。
希望这可以帮助!
我的应用程序中有一个名为posts的实体。帖子可以是其他帖子的子帖子,因此父帖子有hasMany('Posts'),子帖子有hasOne('post')。包含是无限的。 以下是模式: 如何递归地获取“Post_id”设置为null的第一篇帖子的所有子帖子和子帖子的子帖子等? 请不要在这里评论性能,我知道这样的模式很糟糕,我只想知道如何正确编写递归函数来检索无限嵌套的帖子。
问题内容: 我每月都有一组职位。现在,我需要一个数组,其中包含每个月发布的帖子总数。我尝试下面的MySql查询,它的工作正常,但我期望0(零)几个月没有记录。在这里,它不返回0。 我读到COUNT()不会返回“ 0”,那么我该如何实现呢? 我尝试了IFNULL()和COALESCE(),但仍然得到相同的结果。请帮助此查询。谢谢你...... 结果: 预期结果(没有一月份的职位): 样本数据: 问题
问题内容: 我有这样的SQL(5天前在哪里): 我希望它每天返回一个值,因此在这种情况下(5天前到今天)它将返回5个结果。 但是,如果说昨天是0,则不会返回该日期的所有数据,而是返回零。 如何更改该SQLite查询,使其还返回计数为0的数据? 问题答案: 如果不进行复杂的查询(我认为),您的输出数据集将不包含输入数据集中不存在的日期。这意味着您需要一个5天的数据集才能加入。 简单的版本是用5个日期
问题内容: Aerospike客户端具有scanAll方法,可从其存储中读取所有行。我在以下代码中使用它: 但这已完成,因为userKey为null。所有其他字段均有效。用户密钥是Long值,用于保存数据: 一切都很好,如果我这样发出单个请求: 有什么问题吗?为什么userKey为null? 问题答案: Aerospike使用密钥和设置名称来生成唯一的摘要,因此它仅存储摘要。 如果插入一条记录(如
我知道可以使用
问题内容: 我正在尝试使用C#查找表的计数,但是我一直在获取 不存在数据时进行无效的读取尝试 我的代码: 我知道我与数据库之间存在有效的连接,因为我可以在许多地方进行读写操作,但是我无法正确读取数据库有何特别之处?我该如何填充? 问题答案: 您必须阅读: 或者,您可以只使用ExecuteScalar: 定义为: 执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。