Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
При обновлении выдает ошибку что поле должно быть уникальным т.е. само значение уникально и не меняется. В общем как указать при обновлении что если значение поля такое же как было чтоб не выдавало ошибку?
<?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',
];
}
}
Не в сети
После долгих поисков решения пришел к этому, может кому-то поможет
смысл в том что после 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,
];
}
}
Не в сети
тоже решаю подобную задачу но не понял твой способ совсем, можно как то пояснить?
Не в сети
'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)
Не в сети
>> 'required' => говорит что поле уникальное
обязательно, а не уникально
Не в сети
>> 'required' => говорит что поле уникальное
обязательно, а не уникально
Да спасибо опечатался)
Не в сети
Страницы 1