2017-10-13 54 views
0

所以我想要做的是产生一个试算表报告。我必须得到两个日期之间的所有账户图表(coas)以及它的借方和贷方金额的总和。我在数据库中的这些表,这些都是他们的属性如何使用Laravel 5.2返回带日期范围的数据?

  1. 客户:ID,名称
  2. 辅酶A:ID,名称
  3. 杂志:ID,描述,日期
  4. Journal_details:ID,journal_id, coa_id,借记卡,信用卡

我已经把它们的关系放在模型中。

Client.php

public function coas() 
{ 

    return $this->belongsToMany('App\Coa'); 
} 

public function journal(){ 

    return $this->hasMany('App\Journal'); 
} 

Coa.php

public function clients(){ 

    return $this->belongsToMany('App\Client'); 
} 

public function journals_details(){ 

    return $this->hasMany('App\JournalDetails'); 
} 

Journal.php

public function journal_details(){ 

    return $this->hasMany('App\JournalDetails'); 
} 

public function client(){ 

    return $this->belongsTo('App\Client'); 
} 

JournalDetails.php

public function journal(){ 

    return $this->belongsTo('App\Journal'); 
} 


public function coa() 
{ 
    return $this->belongsTo('App\Coa'); 
} 

我试图让所有的CoA与特定客户的杂志细节,我已经做了。 $ trials = $ client-> coas() - > with('journals_details') - > get();

但是,我使用日期范围来仅选择属于输入的特定日期的日期范围。这是我的控制器。我试过这个,但它不起作用。

public function trial_balance_generate(Request $request) 
     { 

      $client = Client::find($request->client_id); 

      $start = \Carbon\Carbon::parse($request->from)->startOfDay(); 

      $end = \Carbon\Carbon::parse($request->to)->endOfDay(); 

      $data= $client->coas()->with('journals_details')->whereBetween('date',[$start,$end])->get(); 

      return response()->json($data); 
     } 

我知道如何获取数据有问题。我只是不知道如何通过包含日期的日志标题获得所有的coas和它的详细信息。

这是我的JavaScript获取日期范围。

$('.date').on('change', function() { 
     var from = $('#from').val(); 
     var to = $('#to').val(); 
     var client_id = $('.clientHidden').val(); 
     $.ajax({ 
       type : 'get', 
       url  : '/user/'+client_id+'/reports/trialbalance/generate/', 
       dataType: 'json', 
       data : { 
        'from':from, 
        'to':to, 
        client_id':client_id 
        }, 
       success:function(data){ 
        $('td').remove(); 
        for(var ctr = 0; ctr < data.length; ctr++) 
        { 

         $('#reportTbody').append() 

           '<tr><td>'+ data[ctr].name +'</td><td>{{$trial->journals_details->sum("debit")}}</td><td>{{$trial->journals_details->sum("credit")}}</td></tr>'+ 

        }     
      }   
     }); 
}); 

这里是什么,我想实现https://imgur.com/a/IZvio返回一切,所以没有日期还没有照片。

+0

您是否需要'coa'表中'client_id'列'Coa-> belongsToMany'才能正常工作? – Matey

+0

还有另一个名为'client_coa'的表,它由client_id和coa_id组成。 – ninuhh

回答

0

模型上的date是碳实例吗?否则它们不具有可比性。

您可以将其设置为对在$date属性模型中的碳例如:

protected $dates = [ 
    'created_at', 
    'updated_at', 
    'date' 
]; 

通过这样做,你将覆盖$dates所以一定要包括created_atupdated_at(和deleted_at,如果你”重新使用软删除)。

Documentation link

+0

哦,没错。已经尝试过,但stil没有返回正确的值。 – ninuhh

0

我认为你需要调试执行的SQL laravel并查明是否按预期。在laravel获取执行sql语句的方法是使用\DB::enableQueryLog()

在你的控制器的方法:

DB::enableQueryLog(); 
#your laravel query goes here 
$laQuery = DB::getQueryLog(); 
#optionally disable the query log: 
DB::disableQueryLog(); 

,那么你可以打印之前执行的SQL,并检查了是否如预期呢!

相关问题