Вставить в две таблицы в Laravel - PullRequest
0 голосов
/ 05 июля 2019

У меня есть форма регистрации, в которой пользователь может выбрать из выпадающего списка: Фермер или Покупатель . Если пользователь выберет Фермер , я хочу добавить вновь созданный user_id в таблицу Фермер . Если пользователь выберет Покупатель , я хочу добавить вновь созданный user_id в таблицу покупатель .

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

Как сохранить вновь созданный user_id в соответствующую таблицу?

Ниже мой код:

$user = User::create([
        'username' => $data['username'],
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'group' => $data['group'], 
]);

$farmer = Farmer::make([
            'user_id' => $user->id,
]);

$user->farmer()->save($farmer);
return $user;

Ответы [ 3 ]

0 голосов
/ 05 июля 2019

делай так.

$decide = $data['select_option'];
if($decide == 'farmer'){
    $farmer = Farmer::create([
                'user_id' => $user->id,
    ]);
}
elseif($decide == 'buyer'){

    $buyer = Buyer::create([
                'user_id' => $user->id,
    ]);
}
0 голосов
/ 05 июля 2019

Спасибо, ребята, за помощь, я нашел самый простой способ решить мои проблемы с этим ниже:

if ($user->group == 2) {
        $buyer = Buyer::create([
            'user_id' => $user->id,
        ]);
    }elseif ($user->group == 3) {
        $farmer= Farmer::create([
            'user_id' => $user->id,
        ]);
    }

    $user->save();

    return $user;
0 голосов
/ 05 июля 2019

Я думаю, у вас есть пара проблем:

Во-первых, вы не используете описанную вами проверку;

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

Во-вторых, вы просто создаете фермера, ничего общего с покупателем, которого вы описали

если пользователь является покупателем, то таблица покупателя получает его / ее user_id

Решение: нужно сначала использовать проверку, а затем соответствующим образом создать эти записи в таблице.

Также, пожалуйста, заключите ваш код в транзакцию:

DB::transaction(function(){
    // Your code here...
})
...