Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.02.2015 18:05:31

Валидация поля unique

При обновлении выдает ошибку что поле должно быть уникальным т.е. само значение уникально и не меняется. В общем как указать при обновлении что если значение поля такое же как было чтоб не выдавало ошибку?

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class MyRequest extends Request {

	/**
	 * Determine if the user is authorized to make this request.
	 *
	 * @return bool
	 */
	public function authorize()
	{
		return true;
	}

	/**
	 * Get the validation rules that apply to the request.
	 *
	 * @return array
	 */
	public function rules()
	{
		return [
			'name' => 'required',
			'alias' => 'required|unique:table_name',
		];
	}

}

Не в сети

#2 22.02.2015 15:04:24

Re: Валидация поля unique

После долгих поисков решения пришел к этому, может кому-то поможет
смысл в том что после unique:table_name необходимо указать названия поля по которому искать в БД на уникальность, после него ставится запятая и добавляется ID текущей модели, который находится получением сегмента Uri и поиске его в БД

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class MyRequest extends Request {

	/**
	 * Determine if the user is authorized to make this request.
	 * @return bool
	 */
	public function authorize()
	{
		return true;
	}

    public function getPageId()
    {
        return App\Models\Page::getIdByAlias($this->segment(2));
    }

	/**
	 * Get the validation rules that apply to the request.
	 * @return array
	 */
	public function rules()
	{
		return [
			'name' => 'required',
			'alias' => 'required|unique:table_name,alias,'. $this->getPageId,
		];
	}

}

Не в сети

#3 26.02.2015 21:52:47

stuchin
Откуда: Волгоград
Сообщений: 68

Re: Валидация поля unique

тоже решаю подобную задачу но не понял твой способ совсем, можно как то пояснить?

Не в сети

#4 26.02.2015 23:08:44

Re: Валидация поля unique

'alias' => 'required|unique:table_name,alias,'. $this->getPageId

'alias' => название поля которое приходит от пользователя
'required' => говорит что поле уникальное
'unique:table_name,alias,'. $this->getPageId - unique:table_name говорит что поле уникальное table_name - название таблицы в которой это поле существует. После указываем как поле называется в этой таблице в моем случае ',alias'. И чтобы при обновлении не ругалось на саму себя нужно указать текущий id записи чтобы он игнорировал её нужно указать этот самый id - ','. $this->getPageId. В итоге получаем sql типа того:
"SELECT COUNT(1) FROM table_name WHERE alias = 'значение alias' AND id <> 'НАш текуший id переданный через $this->getPageId'"

Изменено Jack_White (26.02.2015 23:09:29)

Не в сети

#5 27.02.2015 20:49:07

Re: Валидация поля unique

>> 'required' => говорит что поле уникальное
обязательно, а не уникально smile

Не в сети

#6 28.02.2015 12:53:03

Re: Валидация поля unique

AlexKaliev пишет:

>> 'required' => говорит что поле уникальное
обязательно, а не уникально smile

Да спасибо опечатался)

Не в сети

Подвал раздела