php - 从数据库中填充缺失的日期和空数据并在一个数组中获得结果-Laravel

标签 php mysql laravel

我想显示本周的数据。在数据库中,我有一些特定的日期数据,我已经填充了缺失的日期,并且在 View 页面中我通过 foreach 循环显示,因为我想为它们设置不同的值。但由于 2 个 foreach 循环,它显示了多次数据。我想在一个数组中得到结果。我的代码是:

 public function cashflowdetails() { 
             
            $cashflow = CashModel::orderBy('payment_date','asc') ->get();  
            $cashflow_array = [];
            $cashflowDate_array = [];
                 
            $now = Carbon::now();
            if (Input::get('from') != '') {
                $weekStartDate =Input::get('from') ;
            }
            else{
                $weekStartDate = Carbon::now()->startOfWeek();
            }  
            if (Input::get('to') != '') {
                $weekEndDate = Input::get('to');
            }
            else{
                $weekEndDate = Carbon::now()->endOfWeek()->addDay();
            } 
                $period = CarbonPeriod::create($weekStartDate, $weekEndDate);
                foreach ($period as $date) {
                    $dt    = new DateTime($date->format("Y-m-d")); 

                    if($dt->format('l')!= 'Sunday' && $dt->format('l')!= 'SUNDAY' && $dt->format('l')!= 'SATURDAY' && $dt->format('l')!= 'Saturday')
                    {
                        foreach($cashflow as $cash){ 
                                if($date->format("Y-m-d")  === $cash->payment_date )
                                {    
                                    $dbData['id'] = $cash->id;
                                    $dbData['payment_date'] = $cash->payment_date;
                                    $d    = new DateTime($cash->payment_date); 
                                    $dbData['day'] = $d->format('l');
                                    $dbData['opening_balance'] = $cash->opening_balance;
                                    $dbData['other_income'] = $cash->other_income;
                                    $dbData['rent'] = $cash->rent;
                                    $dbData['labour'] = $cash->labour;
                                    $dbData['electricity'] = $cash->electricity;
                                    $dbData['creditors'] = $cash->creditors; 
                                    $dbData['insurance'] = $cash->insurance;
                                    $dbData['direct_debits'] = $cash->direct_debits;
                                    $dbData['others'] = $cash->others; 
                                    $dbData['total_amount'] = $cash->total_amount; 
                                    $dbData['updated_at'] = $cash->updated_at; 
                                    $dbData['created_at'] = $cash->created_at;  
                                    print_r($cash->payment_date);   
                                    $cashflow_array[] = $dbData;                                                         
                                }
                                else{ 
                                    $dbData['id'] = null;
                                    $dbData['payment_date'] = $date->format("Y-m-d");
                                    $d    = new DateTime($date->format("Y-m-d")); 
                                    $dbData['day'] = $d->format('l');
                                    $dbData['labour'] = 0;
                                    $dbData['opening_balance'] = 0;
                                    $dbData['other_income'] = 0;
                                    $dbData['rent'] =0;
                                    $dbData['electricity'] = 0;
                                    $dbData['creditors'] = 0; 
                                    $dbData['insurance'] =0;
                                    $dbData['direct_debits'] = 0;
                                    $dbData['others'] = 0; 
                                    $dbData['total_amount'] = 0; 
                                    $dbData['updated_at'] = ''; 
                                    $dbData['created_at'] = ''; 
                                    $cashflowDate_array[] = $dbData;
                                }  
                                //break;     
                            }
                                
                        }
                    }  
                 $cashflow = array_replace($cashflowDate_array, $cashflow_array); 
                return $cashflow; 
    } 
enter image description here

最佳答案

public function cashflowdetails() { 
             
    $cashflow = CashModel::orderBy('payment_date','asc') ->get();  
    $cashflow_array = [];
    $cashflowDate_array = [];
         
    $now = Carbon::now();
    
    if (Input::get('from') != '') {
        $weekStartDate =Input::get('from') ;
    }
    else{
        $weekStartDate = Carbon::now()->startOfWeek();
    }  
    if (Input::get('to') != '') {
        $weekEndDate = Input::get('to');
    }
    else{
        $weekEndDate = Carbon::now()->endOfWeek()->addDay();
    } 
    
    $period = CarbonPeriod::create($weekStartDate, $weekEndDate);
    foreach ($period as $date)
    {
        //add a flag to see if the code was executed or not
        $isExecuted = false;
        $dt    = new DateTime($date->format("Y-m-d")); 
        if($dt->format('l')!= 'Sunday' && $dt->format('l')!= 'SUNDAY' && $dt->format('l')!= 'SATURDAY' && $dt->format('l')!= 'Saturday')
        {
            foreach($cashflow as $cash){ 
                if(  $date->format("Y-m-d")   === $cash->payment_date )
                {    
                    $dbData['id'] = $cash->id;
                    $dbData['payment_date'] = $cash->payment_date;
                    $d    = new DateTime($cash->payment_date); 
                    $dbData['day'] = $d->format('l');
                    $dbData['opening_balance'] = $cash->opening_balance;
                    $dbData['other_income'] = $cash->other_income;
                    $dbData['rent'] = $cash->rent;
                    $dbData['labour'] = $cash->labour;
                    $dbData['electricity'] = $cash->electricity;
                    $dbData['creditors'] = $cash->creditors; 
                    $dbData['insurance'] = $cash->insurance;
                    $dbData['direct_debits'] = $cash->direct_debits;
                    $dbData['others'] = $cash->others; 
                    $dbData['total_amount'] = $cash->total_amount; 
                    $dbData['updated_at'] = $cash->updated_at; 
                    $dbData['created_at'] = $cash->created_at;

                    //if executed, assign it true 
                    $isExecuted = true; 
                    //psuh the values to array
                    $cashflow_array[] = $dbData;
                    //break the loop
                    break;                          
                }               

            }     
            //if not found in database
            if(!$isExecuted){               
                $dbData['id'] = NULL;
                $dbData['payment_date'] = $date->format("Y-m-d");
                $d    = new DateTime($date->format("Y-m-d")); 
                $dbData['day'] = $d->format('l');
                $dbData['labour'] = 0;
                $dbData['opening_balance'] = 0;
                $dbData['other_income'] = 0;
                $dbData['rent'] =0;
                $dbData['electricity'] = 0;
                $dbData['creditors'] = 0; 
                $dbData['insurance'] =0;
                $dbData['direct_debits'] = 0;
                $dbData['others'] = 0; 
                $dbData['total_amount'] = 0; 
                $dbData['updated_at'] = ''; 
                $dbData['created_at'] = ''; 
                $cashflow_array[] = $dbData;                          
            }
        }
    } 

    return $cashflow_array; 
    
}

关于php - 从数据库中填充缺失的日期和空数据并在一个数组中获得结果-Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65402354/

相关文章:

mysql - mysql从多个表中查询值

发布时我的 error_log 上出现 php 错误

php - *Job Class* 和 Illuminate\Bus\Queueable 在 *Job Class* 的组合中定义了相同的属性 ($connection)

php - MySQL 空间扩展和 PHP

php - 将整数分配为变量

php - Laravel 无法捕获异常并使用错误消息重定向

php - 有没有更好的方法来填写上述搜索表单中的表单输入值?

php - 无法在 array_push 中将时间戳转换为日期时间

php - 如何在mongodb中对查找结果进行排序

php - Codeigniter Ion Auth 编辑用户表