Проверка достоверности: уникальный параметр, 4-й параметр

Просматривая документы Laravel, документы API и исходный код, мне интересно, кто-нибудь знает, что такое 4-й параметр id в следующем уникальном правиле для?

'email' => 'unique:users,email_address,NULL,id,account_id,1'

Мое текущее понимание этого правила:

  • users — глядя в эту таблицу
  • email_address — проверка по этому столбцу
  • NULL — было бы, где мы могли бы указать первичный ключ / значение ID, чтобы игнорировать, но мы не беспокоились, поэтому этот параметр по существу игнорируется
  • idнеуверенный
  • account_id — Дополнительный пункт where, это имя столбца
  • 1 — значение для account_id в пункте, где

Документация: http://laravel.com/docs/4.2/validation

Функция, ответственная за выполнение проверки уникального правила, найденного в \Illuminate\Validation\Validator в функции validateUnique($attribute, $value, $parameters) онлайн 949:

/**
* Validate the uniqueness of an attribute value on a given database table.
*
* If a database column is not specified, the attribute will be used.
*
* @param  string  $attribute
* @param  mixed   $value
* @param  array   $parameters
* @return bool
*/
protected function validateUnique($attribute, $value, $parameters)
{
$this->requireParameterCount(1, $parameters, 'unique');

$table = $parameters[0];

// The second parameter position holds the name of the column that needs to
// be verified as unique. If this parameter isn't specified we will just
// assume that this column to be verified shares the attribute's name.
$column = isset($parameters[1]) ? $parameters[1] : $attribute;

list($idColumn, $id) = array(null, null);

if (isset($parameters[2]))
{
list($idColumn, $id) = $this->getUniqueIds($parameters);

if (strtolower($id) == 'null') $id = null;
}

// The presence verifier is responsible for counting rows within this store
// mechanism which might be a relational database or any other permanent
// data store like Redis, etc. We will use it to determine uniqueness.
$verifier = $this->getPresenceVerifier();

$extra = $this->getUniqueExtra($parameters);

return $verifier->getCount(

$table, $column, $value, $id, $idColumn, $extra

) == 0;
}

ура

0

Решение

Ах, орехи, я думаю, что пенни только что упала.

Поправьте меня, если я ошибаюсь, но 4-й параметр связан с 3-м параметром в том смысле, что он позволяет нам указать, какой столбец мы хотим проверить, игнорируя идентификатор, указанный в 3. Если это не так id,

Пример, если первичного ключа не было id и был user_id вместо этого мы могли бы сделать это:

'email' => 'unique:users,email_address,NULL,user_id,account_id,1'
2

Другие решения

  • $ ARG1 — смотреть в этой таблице
  • $ ARG2 — проверка по этому столбцу. По умолчанию используется ключ проверки (например, электронная почта)
  • $ ARG3 — дополнительно, где НЕ значение.
  • $ ARG4 — дополнительное поле WHERE NOT. По умолчанию первичный ключ
  • $ ARG5 — Дополнительное поле WHERE 1 — Дополнительное значение WHERE.
2

Вы правы, 4-й параметр — это имя столбца id, если оно отличается от ‘id’, как показано здесь:

https://github.com/laravel/framework/blob/4.2/src/Illuminate/Validation/Validator.php#L991

1
По вопросам рекламы [email protected]