src/Pagination/CursorBuilder.php
protected function whereId($id, $operator)
    {
        /** If we are paging on the key, we only need one where clause. */
        if ($this->isPagingOnKey()) {
            $this->query->where($this->key, $operator, $id);
            return $this;
        }

        $value = $this->getColumnValue($id);

        $this->query->where(
            $this->column, $operator . '=', $value
        )->where(function ($query) use ($id, $value, $operator) {
            /** @var QueryBuilder $query */
            $query->where($this->column, $operator, $value)->orWhere($this->key, $operator, $id);
        });

        return $this;
    }
protected function whereId($id, $operator)
    {
        /** If we are paging on the key, we only need one where clause. */
        if ($this->isPagingOnKey()) {
            $this->query->where($this->key, $operator, $id);
            return $this;
        }

        $value = $this->getColumnValue($id);

        $this->query->where(
            $this->column, $operator . '=', $value
        )->where(function ($query) use ($id, $value, $operator) {
            /** @var QueryBuilder $query */
            $query->where($this->column, $operator, $value)->orWhere($this->key, $operator, $id);
        });

        return $this;
    }
Add a where clause for the supplied id and operator.

If we are paging on the key, then we only need one where clause - i.e.
on the key column.

If we are paging on a column that is different than the key, we do not
assume that the column is unique. Therefore we add where clauses for
both the column plus then use the key column (which we expect to be
unique) to differentiate between any items that have the same value for
the non-unique column.

@param $id
@param $operator
@return $this
@see https://stackoverflow.com/questions/38017054/mysql-cursor-based-pagination-with-multiple-columns