2016-10-07 8 views
1

Laravel 5クエリービルダーを使用してSUMを作成しました。テーブルプリフィックス付きのDB :: raw()を使用

return DB::table('table1')->join('table2','table1.id','=','table2.id') 
      ->where('table1.user_id','=',$userId) 
      ->whereMonth('table2.date', '=', $month) 
      ->whereYear('table2.date', '=', $year)->select('table2.*', DB::raw('SUM(table1.count) AS count_single'))->groupby('table2.id')->get(); 

が、私の問題は、私は(XC_)のプレフィックステーブルを持っているということで、DB ::生リターンエラー

"Column not found: 1054 Unknown column 'table1.count' " 

私が入れた場合ので、それは、プレフィックステーブルに問題がある:

$table_prefix = env('DB_TABLE_PREFIX', 'xc_'); 
DB::raw('SUM('.$table_prefix.'table1.count) AS count_single') 

問題は接頭辞ですが、私はこのメソッドが気に入らないので、 プリフィックステーブルを指定せずにDB :: Rawを使用する方法がありますか?

+0

すべてのテーブルに使用可能なそのテーブルの接頭辞ですか? –

+0

データベース内のすべてのテーブルにプレフィックスがある場合。 [このリンクをチェックすると役立つことがあります](http://stackoverflow.com/questions/15885681/laravel-migrations-table-prefix-issue#16261409) – Anish

+0

はい、プレフィックスはすべてのテーブルにあり、私はすでにdatabase.phpに正しいプレフィックス – LorenzoBerti

答えて

2

DB::raw()生の発現を作成するために使用されるので、あなたは完全な テーブル名を使用する必要があります。

Laravelクエリビルダは、これに上記のコードを交換し、それが動作するテーブルの接頭辞DB::getTablePrefix()

を取得するための作り付けの機能を持っています。

return DB::table('table1') 
       ->join('table2', 'table1.id', '=', 'table2.id') 
       ->where('table1.user_id', '=', $userId) 
       ->whereMonth('table2.date', '=', $month) 
       ->whereYear('table2.date', '=', $year) 
       ->select('table2.*', DB::raw('SUM(' . DB::getTablePrefix() . 'table1.count) AS count_single')) 
       ->groupby('table2.id') 
       ->get(); 


参考:

+0

を設定しているので、プレフィックスを置く必要があります!説明には完璧でありがとう! – LorenzoBerti

+0

@LorenzoBerti:ようこそ。 :) –

関連する問題