2017-10-13 3 views
0

私がしようとしているのは、試算レポートを作成することです。私はすべての勘定科目表(coas)とその借方とそのクレジットの合計を2つの日付の間に取得しなければならない。私は、データベース内のこれらのテーブルを持っており、これらはLaravel 5.2で日付範囲のデータを返す方法は?

  1. クライアント彼らの属性を示します。名前、IDを
  2. のCOA: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); 
     } 

私はデータを取得する方法に何か問題があることを知っています。私はちょうど日付を含むジャーナルヘッダーですべてのコアとその詳細を取得する方法を知りません。

これは、日付範囲を取得するための私の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-> belongsToMany'が動作するための' coas'テーブルに 'client_id'カラムが必要ないのですか? – Matey

+0

client_idとcoa_idからなる 'client_coa'という別のテーブルがあります。 – 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をデバッグし、予想通り、それがあるかどうかを確認する必要があると思います。お使いのコントローラメソッドで

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

その後、あなたが前に実行されたSQLを印刷して、それが予想されるかどうかを確認することができますlaravelで実行SQLを取得する方法が使用\DB::enableQueryLog()です!

関連する問題