laravel created_at未显示正确的值,即在数据库中

时间:2018-03-22 07:45:46

标签: php mysql datetime laravel-5.4

嗨我有一张名为invoice的表格,我正在尝试搜索特定日期之间创建的pi,所有操作都朝着正确的方向前进并显示正确的结果,但我的 created_at 列没有显示正确显示我今天日期的值而不是显示数据库值。

我的控制器代码

 public function search_pi1(Request $request){

            $from_date=date("Y-m-d", strtotime($request->from_date));
            $to_date=date("Y-m-d", strtotime($request->to_date));
            $q=$request->q;
            $pi=PI::where('created_at','>=',$from_date)->where('created_at','<=',$to_date)->where('company_name','LIKE','%'.$q.'%')->get();

            $params=[
                'pi'=>$pi,
                'from_date'=>$request->from_date,
                'to_date'=>$request->to_date,
                'q'=>$q,
            ];
            return view('pi.search_pi1')->with($params);

    }

我的观看代码是

@if(sizeof($pi)>0)
               <div class="table-responsive">

                <table cellpadding="1" cellspacing="1" class="table table-bordered table-striped">
                    <thead>
                    <tr>
                        <th>S.N.</th>
                        <th>Invoice No</th>
                        <th>Company Name</th>
                        <th>Source</th>
                        <th>Destination</th>
                        <th>Dept</th>
                        <th>Creation Date</th>
                        <th>Created By</th>

                        <th colspan="2">Action</th>
                    </tr>
                    </thead>
                    <tbody>
                      @php($i=1)
                      @foreach($pi as $enquiry)

                        <tr>
                        <td>{{$i++}}</td>
                         <td>{{$enquiry->invoiceNumber}}</td>
                        <td>{{$enquiry->company_name}}</td>
                        <td>{{$enquiry->invoice_source}}</td>
                        <td>{{$enquiry->invoice_destination}}</td>
                        <td>{{$enquiry->dept}}</td>

                      <td>


                          {{ $enquiry->created_at }}

                      </td>
                      <td>{{$enquiry->created_by}}</td>
                      <td>   <form action="{{ route('pi.editPi')}}" method="post">

              <input type="text" name="pi_id" value="{{$enquiry->id}}"  style="display: none;">
                               <button class="btn btn-info btn-xs">
                               <i class="fa fa-pencil" title="Edit"></i>  </button>


            </form></td>

                       <td><a href="" class="btn btn-danger btn-xs"><i class="fa fa-trash-o" title="Delete"></i> </a></td>

                    </tr>
                      @endforeach





                    </tbody>
                </table>

</div>




            </div>        @else
            <br> <br> <br>
            <h4 style="color: red;text-align: center;">No Record Found</h4>
            @endif

当我搜索在20-3-2018到22-03-2018之间创建的pi时它显示了我的两条记录,但是创建的列显示在2018年3月22日 - 07:38:11而不是显示数据库实际值。

1 35 The Manali Inn Himachal Pradesh Himachal Pradesh Mr. Manoj Sharma Tel 123456987 22 Mar 2018 - 07:38:11 ADMIN
2 693金星交易员德里安达曼和尼科巴岛Mr.Vinod电话:123456789 22三月2018 - 07:38:11管理员

以下是此搜索的表格数据

查看格式为enter image description here

db表记录 enter image description here

我注意到还有一件事,如果我改变系统日期,那么它显示我在系统中设置的日期而不是数据库日期,任何人都有这个想法

PI模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class PI extends Model
{
    //
    protected $table = 'invoice';
    protected $fillable = ['invoiceNumber','eid','company_name','address','city','dept','form_type','security1','invoice_source','invoice_destination','invoice_type','tin_no','cust_order_no',];
     protected $dates = ['created_at', 'updated_at'];

}

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决此问题。

  1. 您可以将时间与Y-m-d一起添加。 e.g。

     public function search_pi1(Request $request){
    
        $from_date=date("Y-m-d", strtotime($request->from_date)) . '00:00:00';
        $to_date=date("Y-m-d", strtotime($request->to_date)) . '23:59:59';
        $q=$request->q;
        $pi=PI::where('created_at','>=',$from_date)->where('created_at','<=',$to_date)->where('company_name','LIKE','%'.$q.'%')->get();
    
        $params=[
            'pi'=>$pi,
            'from_date'=>$request->from_date,
            'to_date'=>$request->to_date,
            'q'=>$q,
        ];
        return view('pi.search_pi1')->with($params);
    
     }
    
  2. 但这将是解决问题的外行方式。

    1. 您可以使用whereDate方法

      更新where方法
       public function search_pi1(Request $request){
      
          $from_date=date("Y-m-d", strtotime($request->from_date));
          $to_date=date("Y-m-d", strtotime($request->to_date));
          $q=$request->q;
          $pi=PI::whereDate('created_at','>=',$from_date)->whereDate('created_at','<=',$to_date)->where('company_name','LIKE','%'.$q.'%')->get();
      
          $params=[
              'pi'=>$pi,
              'from_date'=>$request->from_date,
              'to_date'=>$request->to_date,
              'q'=>$q,
          ];
          return view('pi.search_pi1')->with($params);
      
       }
      
    2. 请随时再问我,如果您发现错误,请告诉我。