Я пишу задание cron, которое будет запускаться каждую минуту для отправки уведомлений Firebase пользователям при условии (если время, хранящееся в базе данных, меньше текущего времени в разработке. В производстве, если сохраненное время равно текущему времени ). В функции дескриптора задания cron у меня есть следующий код
public function handle()
{
// get current time
$current_time = Carbon::now()->format('H:i:00');
// get all daily_checks's user_id where time matches current time
$matched_check_user_id = DailyCheck::where('time', '<', $current_time)->pluck('user_id')->toArray();
\Log::debug($matched_check_user_id);
\Log::debug(gettype($matched_check_user_id));
// get fcm_tokens of matched user_ids
$fcm_tokens = Device::whereIn('user_id', '=', $matched_check_user_id)->pluck('fcm_token')->toArray();
// send firebase notifications
\Log::debug($fcm_tokens);
}
Пожалуйста, обратите внимание на две таблицы. daily_checks таблица, в которой я сравниваю время отправки уведомления, и таблицу devices , где у меня хранится fcm_token . Оба имеют user_id в качестве внешнего ключа.
Во-первых, я получаю все идентификаторы пользователей из daily_checks , где выполняется мое временное условие.
$matched_check_user_id = DailyCheck::where('time', '<', $current_time)->pluck('user_id')->toArray();
Затем я пытаюсь получить Fcm_tokens совпадающих идентификаторов_пользователей, где я обнаружил ошибку
$fcm_tokens = Device::whereIn('user_id', '=', $matched_check_user_id)->pluck('fcm_token')->toArray();
Я зарегистрировал все результаты. Вот скриншот файла журнала
введите описание изображения здесь