Как использовать логическое значение для передачи данных в таблицу, используя готовые настройки регистра laravel

#laravel #boolean #migration

#laravel #логическое #миграция

Вопрос:

Здесь новичок. Итак, я редактировал встроенную пользовательскую таблицу, созданную с помощью vue —auth. До сих пор я добавлял свои собственные текстовые столбцы, что было достаточно просто, но теперь я столкнулся с использованием логического значения. Я искал везде и не могу найти простой способ передачи данных через форму флажка в таблицу.

Вот мой файл миграции:

 <?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('first_name');
            $table->string('last_name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->mediumText('bio');
            //$table->boolean('is_expert')->default(false);
            //$table->tinyInteger('is_customer'); 
            //$table->binary('photo')->nullable();          
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}
  

Я хочу использовать закомментированное логическое значение

Итак, я запускаю этот код (после удаления //)

Затем мне нужно создать форму в моем register.blade.php.

вот как это выглядит на данный момент:

 @extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('Register') }}</div>

                <div class="card-body">
                    <form method="POST" action="{{ route('register') }}">
                        @csrf

                        <div class="form-group row">
                            <label for="first_name" class="col-md-4 col-form-label text-md-right">{{ __('First Name') }}</label>

                            <div class="col-md-6">
                                <input id="first-name" type="text" class="form-control @error('first-name') is-invalid @enderror" name="first_name" required>

                                @error('first-name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="last_name" class="col-md-4 col-form-label text-md-right">{{ __('Last Name') }}</label>

                            <div class="col-md-6">
                                <input id="last-name" type="text" class="form-control @error('last-name') is-invalid @enderror" name="last_name" required>

                                @error('last-name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>



                        <div class="form-group row">
                            <label for="bio" class="col-md-4 col-form-label text-md-right">{{ __('Bio') }}</label>

                            <div class="col-md-6">
                                <input id="bio" type="text" class="form-control @error('bio') is-invalid @enderror" name="bio" required>

                                @error('bio')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
  

после этого больше контента, но похожие текстовые формы

и вот мой контроллер

 <?php

namespace AppHttpControllersAuth;

use AppHttpControllersController;
use AppProvidersRouteServiceProvider;
use AppUser;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateSupportFacadesHash;
use IlluminateSupportFacadesValidator;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return IlluminateContractsValidationValidator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'first_name' => ['required', 'string', 'max:30'],
            'last_name' => ['required', 'string', 'max:30'],
            'bio' => ['required', 'string', 'max:200'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return AppUser
     */
    protected function create(array $data)
    {
        return User::create([
            'first_name' => $data['first_name'],

            'last_name' => $data['last_name'],

            'bio' => $data['bio'],

            'email' => $data['email'],
            
            'password' => Hash::make($data['password']),
        ]);
    }

}
  

Приносим извинения за объем вставленного здесь кода! мой вопрос таков. Как бы я задал форму в файле register.blade и что затем мне понадобится в контроллере? Нужно ли мне также вводить что-либо в модель. Еще раз приношу извинения за глупый вопрос и расплывчатые детали, я не смог найти ответ на этот вопрос при поиске

Ответ №1:

Не уверен, понимаю ли я. Если вы хотите предоставить пользователю возможность указать, является ли он экспертом во время регистрации, это то, что вам нужно сделать:

Вид:

 <input type="checkbox" name="is_expert"></input>
  

Контроллер:

 protected function create(array $data)
{
    return User::create([
        'first_name' => $data['first_name'],

        'last_name' => $data['last_name'],

        'bio' => $data['bio'],

        'email' => $data['email'],
  
        'password' => Hash::make($data['password']),

        'is_expert' => $data['is_expert']
    ]);
}
  

Пользовательская модель:
Если вы хотите использовать массовое присваивание, вам нужно добавить «is_expert» к свойству «fillable» в вашей пользовательской модели. Вероятно, это будет выглядеть примерно так:

 class User extends Model{
    protected $fillable = ['first_name', 'last_name', 'bio', 'email', 'password', 'is_expert'];
  

Но обратите внимание, что это большой пробел в безопасности — пароль необходимо указать другим способом, например, «$user->SetPassword();» а затем «$user->save();»
Также не забудьте раскомментировать «is_expert» в вашем файле миграции.