Czy istnieje w laravel gotowa funkcja, która przekonwertuje dane z modelu na tablice tak, żeby można było to dać do funkcji implode()
i wynik będzie taki
('2012-07-01',2012-07-02','2012-07-25')
Bo mam zapytanie które pobierze mi rekordy (daty) i da do innego zapytanie w where te daty
Ja u siebie to wykonuje w taki sposób, że pobiera rekordy za pomocą modelu
return self::selectRaw(DB::Raw("(DATE(IF(HOUR(moods.date_start) >= '" . $startDay . "', moods.date_start,Date_add(moods.date_start, INTERVAL - 1 DAY) )) ) as dat"))
->where("type","sleep")
->where("id_users",$idUsers)
->whereRaw("time(moods.date_end) < '12:20:20' ")
->whereRaw("time(moods.date_end) > '05:00:20' ")
->where(function ($query) use ($data) {
if (isset($data["dateFrom"])) {
$query->where("moods.date_start",">=",$data["dateFrom"] );
}
if (isset($data["dateTo"])) {
$query->where("moods.date_end","<",$data["dateTo"]);
}
if (isset($data["longSleepHourFrom"])) {
$query->whereRaw("( ( unix_timestamp(date_end) - unix_timestamp(date_start) ) / 3600 ) >= " . $data["longSleepHourFrom"]);
}
if (isset($data["longSleepHourTo"])) {
$query->whereRaw("( ( unix_timestamp(date_end) - unix_timestamp(date_start) ) / 3600 ) < " . $data["longSleepHourTo"]);
}
if (isset($data["longSleepMinuteFrom"])) {
$query->whereRaw("( ( unix_timestamp(date_end) - unix_timestamp(date_start) ) / 60 ) >= " . $data["longSleepMinuteFrom"]);
}
if (isset($data["longSleepMinuteTo"])) {
$query->whereRaw("( ( unix_timestamp(date_end) - unix_timestamp(date_start) ) / 60 ) < " . $data["longSleepMinuteTo"]);
}
})
->get()->all();
i teraz w kontenerze mam taki kod
$array = Mood::selectLastSleep($data, Auth::User()->start_day, Auth::User()->id);
$text = implode("','",($array));
$text = "('" . $text . "')";
print $text;
Tylko, że mam daty w takim formacie
('{"dat":"2021-10-12"}','{"dat":"2021-12-21"}','{"dat":"2022-04-10"}','{"dat":"2022-04-11"}','{"dat":"2022-04-12"}','{"dat":"2022-06-10"}','{"dat":"2022-06-21"}','{"dat":"2022-06-28"}','{"dat":"2022-08-20"}','{"dat":"2022-09-29"}','{"dat":"2022-11-05"}')
A ja chcę mieć w ('2012-07-01',2012-07-02','2012-07-25')
i czy jest jakaś procedura, która to wykona szybko ?