【发布时间】:2019-10-20 13:38:52
【问题描述】:
我正在尝试执行不同的搜索过滤器:用户名、电子邮件和日期范围。除日期搜索外,所有其他搜索过滤器均正常工作。
控制器
public function revenueDetail(Request $request, $plan = null)
{
$data['title'] = 'Revenue Detail Report';
$revenuedetails = DB::table("users")
->select("users.username", "users.email",DB::raw("DATE(users.created_at) as subscription_date"))
->where('users.plan', self::$type[$plan] ?? null); // ?? will escape exception if $plan is null
$render=[];
if(isset($request->start_date) && isset($request->end_date))
{
$revenuedetails=$revenuedetails->whereBetween('created_at',[$request->start_date,$request->end_date]);
$render['start_date']=$request->start_date;
$render['end_date']=$request->end_date;
}elseif(isset($request->start_date))
{
$revenuedetails=$revenuedetails->where('created_at',$request->start_date);
$render['start_date']=$request->start_date;
}
if(isset($request->username))
{
$revenuedetails=$revenuedetails->where('username','like','%'.$request->username.'%');
$render['username']=$request->username;
}
if(isset($request->email))
{
$revenuedetails=$revenuedetails->where('email','like','%'.$request->email.'%');
$render['email']=$request->email;
}
$revenuedetails= $revenuedetails->orderBy('subscription_date','DESC');
$revenuedetails= $revenuedetails->paginate(15);
$revenuedetails= $revenuedetails->appends($render);
$data['revenuedetails'] = $revenuedetails;
return view('revenue.revenueDetail',$data);
}
查看
<div class="row" style="margin-bottom: 10px">
{{ Form::model(request(),['method'=>'get']) }}
<div class="col-sm-2">
{{ Form::text('username',null,['class'=>'form-control','placeholder'=>'Username']) }}
</div>
<div class="col-sm-2">
{{ Form::text('email',null,['class'=>'form-control','placeholder'=>'Email']) }}
</div>
<div class="col-sm-3">
{{ Form::date('start_date',null,['class'=>'form-control','placeholder'=>'Date']) }}
</div>
<div class="col-sm-3">
{{ Form::date('end_date',null,['class'=>'form-control','placeholder'=>'Date']) }}
</div>
<div class="col-xs-2">
{{ Form::submit('Search',['class'=>'btn btn-warning']) }}
<a href="{{ route('gamesexport') }}" class="btn btn-primary"><i class="fa fa-file-excel-o"></i> Excel</a>
</div>
{{ Form::close() }}
</div>
<tbody>
@foreach($revenuedetails as $key => $revenuedetail)
<tr>
<td>{{ ++$key }}</td>
<td>{{ $revenuedetail->username }}</td>
<td>{{ $revenuedetail->email }}</td>
<td>{{ $revenuedetail->subscription_date }}</td>
</tr>
@endforeach
<tr>
<td colspan="8">
{{ $revenuedetails->links() }}
</td>
</tr>
</tbody>
当我点击搜索按钮时,我希望看到正在显示的结果。除日期搜索过滤器外,所有其他搜索过滤器都在工作。它不显示任何结果。
如何让它发挥作用
如何将日期格式化为 dd/mm/yyyy
谢谢。
【问题讨论】:
-
我看不出任何看起来有问题的副手,但是当我试图让过滤器正常工作时,我通常的策略是先手动编写我想要的 SQL(在你的情况下很直接 - forward) 然后记录生成的 SQL 语句并继续处理它,直到我正确为止: Log::info('User:' . Auth::user()->id . ' - ' . $query->toSql ());
-
我也不懂。它只是日期过滤器
-
如果您记录 $revenuedetails->toSql() 您将看到正在生成的 sql 并且您会知道它为什么不起作用。