集計結果を以下のようにクエリビルダで書きました。
しかし、以下のようなエラーが発生しました。
selectRaw内で変数を使うにはどうすればいいのでしょうか?
エラー文
Object of class Closure could not be converted to string
## クエリビルダ
$lastYearDate = DB::table('posts') ->selectRaw('SUM(total_amt) AS total_amount') ->get();
return DB::table('posts') ->selectRaw(function ($query) use ($lastYearDate) { foreach ($lastYearDate as $val) { $query->selectRaw('SUM(posts.total) / ? AS ratio',[$val->total_amount]); } })
var_dump($lastYearDate)の結果
object(Illuminate\Support\Collection)#1726 (1) { ["items":protected]=> array(1) { [0]=> object(stdClass)#1725 (1) { ["total_amount"]=> string(5) "18000" } } }
foreach($lastYearDate as $val) { echo $val->total_amount; } 18000と取得できることは確認
試したこと
selectRaw('posts',function ($query)
のようにしたところ以下のエラーが発生。
Argument 2 passed to Illuminate\Database\Query\Builder::selectRaw() must be of the type array, object given
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。