Laravel Назначить пользователя для магазина в форме создания - PullRequest
0 голосов
/ 19 июня 2020

У меня форма для добавления новых пользователей и назначения пользователя в Магазин

Кроме того, у меня есть поле user_id в Таблице Магазина

Я пытаюсь сделать следующее:

в форме создания будет поле выбора со всеми именами магазинов, у которых нет идентификатора пользователя

, поэтому я хочу назначить пользователя в выбранный магазин из поля выбора

Есть идеи?

Функция сохранения

public function store(Request $request)
{
    $this->validate($request, array(
        'name'         => 'required|string|max:255',
        'email'          => 'required|string|email|max:255|unique:users',
        'password'          => 'required|string|min:8',
    ));
    $password = Hash::make($request->password);
    $user = new User;
    $user->name = $request->input('name');
    $user->email = $request->input('email');
    $user->password = $password;
    $user->save();

    return redirect('admin/users')->with('success', 'user is successfully saved');
}

Просмотр

<form action="{{route('users.store')}}" method="post">
                                    @csrf
                                    @method('post')
                                <div class="form-group">
                                    <label for="wizard-validation-classic-firstname">Name</label>
                                    <input class="form-control" type="text" id="wizard-validation-classic-firstname" name="name">
                                </div>
                                <div class="form-group">
                                    <label for="wizard-validation-classic-lastname">E-mail</label>
                                    <input class="form-control" type="text" id="wizard-validation-classic-lastname" name="email">
                                </div>
                                <div class="form-group">
                                    <label for="wizard-validation-classic-lastname">password</label>

                                            <input type="text" class="form-control input-lg" name="password">

                                </div>

                                </form>

1 Ответ

0 голосов
/ 19 июня 2020

Код, который вы здесь написали, в порядке, но в методе создания контроллера вы должны захватить магазины без user_id и передать эти магазины в качестве параметра в файле создания представления, чтобы заполнить их в поле выбора (представление, которое вы показали выше ) фрагмент кода метода create () должен выглядеть примерно так:

function  create () {
$shops = Shop::where('user_id',NULL)->get();
 return view('create', ['shops' => $shops]);
} 

в представлении создания добавьте это поле,

<select name="shop_id">
    @foreach($shops as $shop)
    <option value="{{ $shop->id }}">{{ $shop->name }}</option>
    @endforeach
</select>

задайте стиль поля в соответствии с вашими потребностями.

Теперь после отправки формы в методе store () запрос $ будет содержать 'shop_id' со значением, выбранным пользователем, вы можете использовать это значение для сохранения user_id в таблице shop, как показано ниже.

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

$user->save();//this is where you saved the user
//This is the code to save user_id in shop table
//check if user is created successfully
if( $user ) {
Shop::where('id', $request->shop_id)->update(array('user_id' => $user->id));
}

Хотя я не тестировал код полностью с моей стороны, но это в значительной степени вещь и должна работать.

...