私はユーザーからのビュー数を取得するモデルを持っています。私はこのようにそれらのモデルを設定している:私のコントローラでLaravel hasManyThrough whereBetween dates
public function views()
{
return $this->hasManyThrough('App\View', 'App\User');
}
を私はこのようなものをモデルのオブジェクトごとに、チャートにJSONデータを送信しています:
public function barCharts(Request $request){
$modelName = 'App\\'.$request['option'];
$model = new $modelName;
foreach($model->all() as $val){
$modelViews[$val->name] = $val->views->count();
}
return json_encode($modelViews);
}
したがって、たとえば、私のチェーンモデルをDB内に3つの鎖があり、この関数を通じて各鎖のビュー数を取得します。
$modelViews[$val->name] = $val->views->whereBetween('created_at', [$from, $to])->count();
:すべて正常に動作しますが、今、私はそう$from = $request['from']; $to = $request['to'];
から取得する時間間隔のために、そのデータを取得する必要がありますされ は、基本的には、私が必要となることは、このようなものです私はそれに洗練された解決策があるかどうか、これについて行くか、または私はいくつかのSQLクエリを使用する必要がありますかと思います。
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' in where clause is ambiguous
だから、これはそれが私のために最後で働いていた方法です:
更新されたコード
は、私はそれは私にエラーを与えていたことからもwhereBetween句にテーブルを追加する必要がありました:
foreach($model->all() as $val){
$modelViews[$val->name] = $val->views()->whereBetween('views.created_at', [$from.' 00:00:00', $to.' 00:00:00'])->count();
}