У меня есть поле формы для получения мобильного количества пользователей:
<input class="form-control" name="mobile" data-mask="0999 999 9999" type="text" id="mobile" />
Я использовал маску ввода jasny, чтобы помочь пользователям вводить данные, но мне нужно сохранить номер мобильного телефона в формате 999999999 в базу данных (без 0 и пробелов).
Поскольку я использую ajax для отправки данных на сервер с помощью функции serialize(), я не хочу использовать скрипт на стороне клиента для изменения введенного значения (у меня много таких полей формы), кроме как путем изменения или добавления функции или метода к маске ввода jasny использовать на всех таких полях!
Я получаю введенное значение на стороне сервера и хочу присвоить его атрибуту модели в Laravel 5, поэтому в пользовательской модели я объявил аксессор и мутатор для установки и получения номера мобильного телефона:
public function setMobileAttribute($value){
$value = substr(str_replace(" ","",$value),1);
$this->attributes['mobile'] = $value;
}
а также
public function getMobileAttribute($value){
return '0'.substr($value,0,3).' '.substr($value,3,3).' '.substr($value,6,4);
}
Это работает хорошо, но когда я хочу использовать проверку Laravel, чтобы указать, что это уникальное поле, это не работает. Мир кода похож на:
class UserController extends Controller {
protected $rules = ['mobile' => 'required|unique:users'];
public function store(Request $request){
$validator = Validator::make($request->all(), $this->rules);
if ($validator->fails()){
return response()->json([
'success' => false,
'errors' => $validator->getMessageBag()->toArray()
]);
}
// codes to store user...
}
}
Это вызывает ошибку: SQLSTATE[23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись