2017-05-02 9 views
2

このクエリで誰かが間違っていると教えてもらえますか?どこのクエリビルダーwhereDate throwing error: '句'の '2017-05-03 12:00:00'の列が不明

$orderdaytimes = OrderDayTime::whereColumn([ 
        ['date','>=',$start], 
        ['date','<=',$end] 
       ]) -> get(); 
それは私にエラー与えて

SQLSTATE[42S22]: Column not found: 1054 Unknown column '2017-05-03 12:00:00' in 'where clause' (SQL: select * from order_day_times where (date >= 2017-05-03 12:00:00 and date <= 2017-05-31 12:00:00))

私が直接DBでそれをテストしてみたし、次の作品:

select * from `order_day_times` where (`date` >= '2017-05-03 12:00:00' and `date` <= '2017-05-31 12:00:00') 

しかし雄弁に自動的に追加し、 "`" クエリには? T_T

ありがとうございます。

+0

テーブルに 'Column'という列がありますか? –

+0

それはありません。この質問は、質問に記載されているように引用符を置き換えた場合に機能します。( – Faye

答えて

2

だけwhereによってwhereColumnを置き換える:

$orderdaytimes = OrderDayTime::where([ 
    ['date','>=',$start], 
    ['date','<=',$end] 
]) -> get(); 

whereColumn方法は、2つの列が等しいことを確認するために使用することができます。 whereメソッドは、クエリにWHERE句を追加するだけで、あなたが望むものです。 https://laravel.com/docs/5.4/queries#where-clauses

最終段落:

You may also pass an array of conditions to the where function:

$users = DB::table('users')->where([ ['status', '=', '1'], ['subscribed', '<>', '1'], ])->get();

+1

あなたは星です!!!! – Faye

0

私はあなたにこの意志は役に立ち願ってい

$orderdaytimes = OrderDayTime::whereRaw("(date>='$start_date' and 
date<='$end_date'))"); 

を使用する必要があり、以下のようにあなたは、オペレータ間で使用することができます。私はwhereRawを使用しました

+0

セキュリティ上の問題があります。 – x01saa