/**
* 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);
}