【问题标题】:Argument 1 passed to Illuminate\Database\Query\Builder::cleanBindings() must be of the type array, string given传递给 Illuminate\Database\Query\Builder::cleanBindings() 的参数 1 必须是数组类型,给定字符串
【发布时间】:2020-10-29 17:44:20
【问题描述】:

我正在编写一个 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 表和存储 fcm_tokendevices 表。两者都有 user_id 作为外键。

首先,我从满足我的时间条件的 daily_checks 获取所有用户 ID。

$matched_check_user_id = DailyCheck::where('time', '<', $current_time)->pluck('user_id')->toArray();

然后,我尝试在遇到错误的地方获取匹配的 user_ids 的 Fcm_tokens

$fcm_tokens = Device::whereIn('user_id', '=', $matched_check_user_id)->pluck('fcm_token')->toArray();

我已经记录了所有结果。这是日志文件的截图

【问题讨论】:

  • 嗨,S. Farooq,您仍然收到此错误吗?

标签: laravel cron taskscheduler


【解决方案1】:

这里有个问题:

$fcm_tokens = Device::whereIn('user_id', '=', $matched_check_user_id)->pluck('fcm_token')->toArray();

你必须将一个数组传入 whereIn;

$fcm_tokens = Device::whereIn('user_id',[])->pluck('fcm_token')->toArray();

或将其传递为:

 $fcm_tokens = Device::where('user_id', $matched_check_user_id)->pluck('fcm_token')->toArray();

【讨论】:

  • 当我在这里进行日志调试时。 \Log::debug($matched_check_user_id); \Log::debug(gettype($matched_check_user_id));它打印一个数组,类型也是图像中的数组。当我做 $matched_check_user_id = DailyCheck::where('time', 'pluck('user_id')->toArray(); user_id 在数组中
  • 但是,当我将它与 'where' 一起使用时,它运行但它只给了我一个与 id 6 相关的结果。但是,正确的情况是当它也为 id 2 和 3 获取 fcm_token 时。
  • 如果使用 Device::whereIn('user_id',$matched_check_user_id) 会发生什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 2021-03-11
  • 2018-03-22
  • 2018-05-28
  • 2020-02-23
  • 1970-01-01
相关资源
最近更新 更多