所以我要做的就是制作试算平衡报告。我必须得到所有的会计科目表(coas)和两个日期之间的借方和贷方总和。我在数据库中有这些表,这些是他们的属性
我已将他们的关系放在模型中。
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');
}
我试图通过特定客户的日记帐详细信息获取所有coas,我已经在做了。 $ 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 :(得分:0)
模型上的date
是碳实例吗?否则他们没有可比性。
您可以在$date
属性中将其设置为模型上的Carbon实例:
protected $dates = [
'created_at',
'updated_at',
'date'
];
通过执行此操作,您将覆盖$dates
,因此请确保包括created_at
和updated_at
(如果您使用的是软删除,请deleted_at
)。
答案 1 :(得分:0)
我认为你需要调试执行的sql laravel并找出它是否符合预期。在laravel中获取已执行sqls的方法是使用\DB::enableQueryLog()
:
在您的控制器方法中:
DB::enableQueryLog();
#your laravel query goes here
$laQuery = DB::getQueryLog();
#optionally disable the query log:
DB::disableQueryLog();
然后你可以打印之前执行的sql并检查它是否符合预期!