2017-10-13 108 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,並檢查了是否如預期呢!

相關問題