Я пытаюсь вставить значение в базу данных с помощью формы в Laravel, но все мои значения не вставляются.
Вставить только электронная почта, пароль, created_date
Вот мой код миграции: -
Schema::defaultStringLength(191);
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('fname');
$table->string('lname');
$table->string('email')->unique();
$table->string('phone');
$table->string('gender');
$table->string('dob');
$table->string('religion');
$table->string('mtn');
$table->string('country');
$table->string('city');
$table->string('district');
$table->string('upozila');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
Вот мой код контроллера: -
public function register(Request $request)
{
$this->validation($request);
User::create($request->all());
return redirect('/');
}
public function validation($request)
{
$validatedData = $request->validate([
'fname' => 'required|max:255',
'lname' => 'required|max:255',
'email' => 'required|email|max:255|unique:users,email',
'phone' => 'required|max:255',
'gender' => 'required|max:255',
'dob' => 'required|max:255',
'religion' => 'required|max:255',
'mtn' => 'required|max:255',
'country' => 'required|max:255',
'city' => 'required|max:255',
'district' => 'required|max:255',
'upozila' => 'required|max:255',
'password' => 'required|min:6',
'confirm_password' =>'required|min:6|same:password',
]);
}
Вот мой массив = $ request-> all ();
_token "wDRoDeLkOFX5re5nba2Ufv5pr0iKzYVCr0tK9EFE"
fname "nirab"
lname "nirax"
email "[email protected]"
phone "988907"
gender "male"
dob "2018-12-03"
religion "male"
mtn "male"
country "male"
city "male"
district "male"
upozila "male"
password "1234567"
confirm_password "1234567"






Это механизм защиты Laravel, Подробнее читайте здесь:
https://laravel.com/docs/5.7/eloquent#mass-assignment
Когда вы используете create, убедитесь, что ваша модель имеет свойство $ fillable, например:
protected $fillable = [
'fname',
'lname',
'email',
'phone',
'gender',
'dob',
'religion',
'mtn',
'country',
'city',
'district',
'upozila',
'password'
];
Также обратите внимание, что ваш пароль должен быть хеширован, прежде чем вы сохраните его в своей базе данных.
Еще он должен отключить _token от запроса
Вы можете использовать метод create, чтобы сохранить новую модель в одной строке. Вставленный экземпляр модели будет возвращен вам из метода. Однако перед этим вам нужно будет указать атрибут fillable или guarded в модели, поскольку все модели Eloquent по умолчанию защищают от массового назначения.
Для заполнения вы указываете, какие поля могут быть назначены массово в вашей модели, вы можете сделать это, добавив в модель специальную переменную $fillable. Итак, в модели:
class users extends Model {
protected $fillable = ['fname', 'lname', 'email', 'phone', 'gender', 'dob', 'religion', 'mtn', 'country', 'city', 'district', 'upozila', 'password'];
//only the field names inside the array can be mass-assign
}
Подробнее: вы можете прочитать мой ответ и легко понять здесь Что означает «массовое назначение» в Laravel (Ссылка на сайт)
спасибо ... но я редактирую в app / user.php на защищенном $ fillable .. теперь он работает
вы также можете сделать protected $ guarded [], и все, что вы помещаете в массив, не подлежит массовому заполнению.