2017-03-28 21 views
1

は私が私が日時からprint_jobs.job_dateを変えています。この雄弁laravel句

->rightJoin('calendar', function($join) use ($machineName) 
{ 
    $join->on('print_jobs.job_date', '=', 'calendar.datefield') 
     ->where('machines.machine', '=', $machineName); 
}) 

->rightJoin('calendar', function($join) use ($machineName) 
{ 
    $join->on('DATE(print_jobs.job_date)', '=', 'calendar.datefield') 
     ->where('machines.machine', '=', $machineName); 
}) 

への通知から変更する必要が私のコードの一部を持っているところで生参加しています日付。これは、フィールドをdateからdatetimeに変更するまでうまくいきました。

私はここにDATEを追加することは好きではありません。私はちょうど生のジョイントフィールドをここに置く方法を知らない。

+0

'DATE(print_jobs.job_date)'ではなくDB :: raw( 'DATE(print_jobs.job_date)')を試してください。 – phper

答えて

1

これはEloquentではありませんが、これは流暢なクエリビルダであり、明確です。次に問題は、DATE()の処理方法がわからないということです。なぜなら、メソッドではなく文字列が必要なだけなのでです。この問題を回避するには、DBファサードのraw()メソッドを使用します。下の完全な名前空間を含めましたが、ファイルの先頭にはuse、簡潔にするためにはDB::raw()とすることができます。

$join->on(Illuminate\Support\Facades\DB::raw('DATE(print_jobs.job_date)'), '=', 'calendar.datefield') 
+0

ありがとうございます。私は新しいDB :: rawを使用し続けましたが、内部ではなくオン・コールの外で使用しようとしました。これで解決しました。 – BrinkDaDrink