/** * Checks if duplicate values for the column specified exist. Takes * the Nested Set scope columns into account (if appropiate). * * @param string $column * @return boolean */ protected function duplicatesExistForColumn($column) { $connection = $this->node->getConnection(); $grammar = $connection->getQueryGrammar(); $columns = array_merge($this->node->getQualifiedScopedColumns(), array($column)); $columnsForSelect = implode(', ', array_map(function ($col) use($grammar) { return $grammar->wrap($col); }, $columns)); $wrappedColumn = $grammar->wrap($column); $query = $this->node->newQuery()->select($connection->raw("{$columnsForSelect}, COUNT({$wrappedColumn})"))->havingRaw("COUNT({$wrappedColumn}) > 1"); foreach ($columns as $col) { $query->groupBy($col); } $result = $query->first(); return !is_null($result); }