こんにちは。
売上テーブルが存在し、複数のユーザーが紐づけされています。
売上テーブルにはpublish(timestamp)があり、指定する1週間ごとの日付とユーザーで絞り込みを行いたいと考えます。
$usersには['1', '2', '3']配列。
$wvには[['2021-01-01','2021-01-02','2021-01-03'.'2021-01-04'.'2021-01-05'.'2021-01-06'.'2021-01-07'],[...............]]1週間ごとの日付。
$wv2には[['2021-01-01']['2021-01-07'],['2021-01-08']['2021-01-14']]のように週頭と週終わりを入れています。
色々な方法を試してみてはいますが、以下の2つが思い浮かびました。
①のコードは1週間分の日付をそれぞれforeachで回し、それが4週間分なので4回ループさせています。
②のコードは(①が遅かったので書きました)whereBetweenで範囲抽出を行っています。
しかしdumpすると明らかに取得できた結果が違います。。
これはどちらが正しいというか、どういう挙動でこうなっているのでしょうか?
ご存じの方いらっしゃいましたら、ご回答よろしくお願い致します。
① for ($i=0; $i<4; $i++){ foreach ($wv[$i] as $key => $val) { $cnt[$i] = Uriage::whereIn('id', $users) ->whereDate('publish', $val) ->count(); } } dump($cnt); // array:4 [▼0 => 21 1 => 29 2 => 18 3 => 14] ② $cnt2 = array(); foreach($wv2 as $key => $val){ $cnt2[$key] = Uriage::whereIn('id', $users) ->whereBetween('publish', $val) ->count(); } dump($cnt2); // array:4 [▼0 => 171 1 => 118 2 => 160 3 => 176]
回答1件
あなたの回答
tips
プレビュー