gpt4 book ai didi

php - 如何在 laravel 查询构建器或 Eloquent 两个表中按 created_at 列计算行数?

转载 作者:行者123 更新时间:2023-11-30 21:54:17 27 4
gpt4 key购买 nike

我有 call_logs 和 jobseekers 表。两个表都有 created_at 列。call_logs 表中有 jobseeker_id。

在 Jobseeker.php 中

    public function calllogs()
{
return $this->hasMany('App\Calllog','jobseeker_id');
}

在 Calllog.php 中

    public function jobseeker()
{
return $this->belongsTo('App\Jobseeker','jobseeker_id');
}

我想展示一个像这样的表格

created_at                          call_logs            jobseekers                         
----------------------------------- ---------------------------------
2017-08-05 1 3
2017-08-04 2 2
2017-08-03 3 1
2017-08-02 2 4
2017-08-01 5 8

所以,我可以跟踪记录,每天有多少 call_logs 和多少新求职者。这是我在一个表中尝试的方法,效果很好。但是我想同时查询两个表,

$count = DB::table('calllogs')
->select('created_at', DB::raw('count(*) as calllogs'))
->get();

它可以给我看,比如

created_at                        calllogs
----------------------------------- ----------
2017-08-03 2
2017-08-04 3
2017-08-05 8
2017-08-06 6
那么请指导我一种方法吗?我应该使用联合吗?提前致谢。

最佳答案

有两种方法可以解决这个问题。两者都需要一些编码。

首先,您进行 2 个不同的查询,例如也进行此查询。

$count2 = DB::table('jobseekers')
->select(DB::raw('DATE(created_at) as created_at'), DB::raw('count(*) as jobseekers'))
->groupBy(created_at'))
->get();

现在您按天排列计数并将其显示在表格中。

另一种选择是每天查询并统计当天的通话记录和求职者条目。

$start_date = Carbon::now()->subWeek();
$end_date = Carbon::now()->now();
$dates = [];

for ( $date = $start_date; $date->lte( $end_date ); $date->addDay() ) {
$dates[] = $date);
}

$counts = [];
foreach ( $dates as $date ) {
$dateLater = $date->copy()->addDay();
$callLogs = Calllog::whereBetween( [$date, $dateLater] )->count();
$jobSeekers = Jobseeker::whereBetween( [$date, $dateLater] )->count();
$counts[ $date->format( 'Y-m-d' ) ] = [ $callLogs, $jobSeekers ];
}

此处 $counts 包含范围内每一天的求职者计数和通话记录。

关于php - 如何在 laravel 查询构建器或 Eloquent 两个表中按 created_at 列计算行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45904527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com