Как добавить значения в две таблицы, имеющие отношение, используя одну форму? - PullRequest
0 голосов
/ 09 апреля 2019

Я новичок в Laravel, я хочу добавить данные в две таблицы, используя одну форму.Моя таблица и их соотношение:

enter image description here

Я хочу добавить все поля для пользователя, затем выбрать class_id и затем section_id через раскрывающийся список.

А потом зарегистрируйтесь и я хочу, чтобы после регистрации данных.В таблице регистрации должен быть user_id зарегистрированного нового пользователя и выбранный идентификатор класса и секции.

Поля для Таблица учеников

<form method="POST" action="{{url('/storeStudent')}}">
@csrf

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

    <div class="col-md-6">
        <input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>

        @if ($errors->has('name'))
            <span class="invalid-feedback" role="alert">
            <strong>{{ $errors->first('name') }}</strong>
        </span>
        @endif
    </div>
</div>

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

    <div class="col-md-6">
        <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>

        @if ($errors->has('email'))
            <span class="invalid-feedback" role="alert">
            <strong>{{ $errors->first('email') }}</strong>
        </span>
        @endif
    </div>
</div>

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

    <div class="col-md-6">
        <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>

        @if ($errors->has('password'))
                <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('password') }}</strong>
        </span>
        @endif
    </div>
    </div>


     <input id="role_id" type="hidden" name="role_id" value="2">

Поля, начинающиеся с РегистрацияТаблица

    <select class="" name="class_id">
         <option value="null">Class</option>
         @foreach($cid as $cc)
             @if($counterr==0)
                 <option selected="selected" value="{{$cc->id}}">{{$cc->title}}</option>
                 {{$counterr++}}
             @else

                 <option value="{{$cc->id}}">{{$cc->title}}</option>
             @endif
        @endforeach
    </select>

     <select section="" name="section_id">
         <option value="null">Section</option>
         @foreach($sec as $sc)
             @if($counterrr==0)
                 <option selected="selected" value="{{$sc->id}}">{{$sc->title}}</option>
                 {{$counterrr++}}
             @else

                 <option value="{{$sc->id}}">{{$sc->title}}</option>
             @endif
         @endforeach
     </select>
   </div>
  </div>
 </form>

Контроллер регистрации

protected function create(array $data)
    {
        return Registration::create([
            'reg_id' => $data['reg_id'],
            'user_id' => $data['user_id'],
            'class_id' => $data['class_id'],
            'section_id' => $data['section_id'],


        ]);
    }

    public function store(Request $request)
    {

        registration::create($request->all());

        return back();
    }

Store Student

    public function storeStudent(Request $request)
{
    $user=new User();
    $user->name=$request->name;
    $user->password=Hash::make($request->password);
    $user->email=$request->email;
    $user->role_id=2;
    $user->parent_id=$request->parent_id;
    $user->save();


    return back();
}

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

Я использовал простой метод сохранения в контроллере для сохранения данных.

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Это просто .. Вы должны создать пользователя и использовать его идентификатор ... примерно так:

Контроллер ученика:

public function storeStudent(Request $request)
{
     $created_user = User::create([
         'name' => $request->name,
         'email' => $request->email,
         'password' => bcrypt($request->password),
         'parent_id' => $request->parent_id,
         'role_id' => $request->role_id,
     ]);

     //And after that you need to store user_id in Registration table , so:

     Registration::create([
         'user_id' => $created_user->id,
         'class_id' => $request->class_id,
         'section_id' => $request->section_id,
     ]);

     return redirect()->back();

}

надеюсь, это поможет

0 голосов
/ 09 апреля 2019

Пожалуйста, обратитесь к этой ссылке.Вы можете получить некоторые идеи относительно отношений в Laravel.https://laravel.com/docs/5.8/eloquent-relationships

Если это не поможет, тогда мне нужно увидеть ваш контроллер и модель.Пожалуйста, вставьте ваш контроллер и код модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...