Laravel whereNotIn不按预期查询

时间:2016-10-04 13:30:56

标签: php laravel

我的用户类中有一个范围查询,如此(User.php):

public function scopeDeleteUsersWithId($query, $userIds)
{
    return $query->whereNotIn('id', $userIds)->toSql();
}

我从一个集合中获取$userIds,该集合返回id个数组。这是我的收集方法(ImportUsers.php):

private function getUsersToDelete()
{
    return $this->employeeList->pluck('id')->unique()->flatten()->toArray();
}

这是我调用getUsersToDelete方法以便让用户删除(ImportUsers.php)的地方。

private function deleteTerminatedEmployees()
{
    $usersToDelete = $this->getUsersToDelete();

    dd(User::deleteUsersWithId($usersToDelete));
}

正如您所看到的,我正在转储SQL,以便我可以看到查询,因为它不起作用。当我转储查询时,我得到了这个:

raw query

但是,当我dd($userIds) toSql()之前的行时,就像这样(User.php):

public function scopeDeleteUsersWithId($query, $userIds)
{
    dd($userIds);
    // return $query->whereNotIn('id', $userIds)->toSql();
}

我得到了我正在寻找的数组:

enter image description here

我花了很多时间试图解决这个问题而不能。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用DB::listen。这是文档DB::listen

DB::listen(function ($query) {
            var_dump($query->sql); 
            var_dump($query->bindings); 
            var_dump($query->time); 
});

您还可以在scotch.io

找到详细信息

我希望这对你有所帮助。