toArray(); $values = array_map(function ($value) use ($columns) { if (array_is_list($value)) { return $value; } return array_reduce($columns, function ($sortedValue, $column) use ($value) { $sortedValue[$column] = $value[$column] ?? trigger_error( sprintf( '%s: %s', 'The value of the column is not found in the array.', $column ), E_USER_ERROR ); return $sortedValue; }, []); }, $values); $rawValue = sprintf('(%s)', implode(',', array_fill(0, count($columns), '?'))); $rawValues = implode(',', array_fill(0, count($values), $rawValue)); $raw = "($rawColumns) $type ($rawValues)"; return $this->whereRaw($raw, $values, $boolean); }; } public function whereNotIns(): callable { return function (array $columns, $values) { /** @var \Illuminate\Database\Eloquent\Builder $this */ return $this->whereIns($columns, $values, 'and', true); }; } public function orWhereIns(): callable { return function (array $columns, $values) { /** @var \Illuminate\Database\Eloquent\Builder $this */ return $this->whereIns($columns, $values, 'or'); }; } public function orWhereNotIns(): callable { return function (array $columns, $values) { /** @var \Illuminate\Database\Eloquent\Builder $this */ return $this->whereIns($columns, $values, 'or', true); }; } }