猿问

在 Laravel 上注册后如何插入到另一个表中?

所以,我有一个 Laravel 网络并有一些表,其中两个是users和user_data。 user_data有一个user_id引用idon的外键users。


users具有用户名、电子邮件、密码等一般属性,并且user_data与usersgame_money、game_job、game_tier等具有 1 对 1 关系。如果我将这 2 个组合成 1 个表,列太长,所以我很难规范化它。


用户注册工作顺利。但是我不知道如何user_data在新用户注册时添加新条目并在users. 中的属性列user_data(如 game_money 等)是由 laravel 之外的外部应用程序填充的,所以我只需要user_data.user_id在外键中添加一个条目,并让 user_data 中的其他属性在被更新之前使用默认值或 null外部应用程序。


这是我的user_data迁移:


Schema::create('user_data', function (Blueprint $table) {

            $table->unsignedBigInteger('user_id');

            $table->foreign('user_id')->references('id')->on('users');


            $table->string('account_tier')->default("Free");

            $table->float('economy')->default(0);

            $table->string('job')->nullable();


            $table->timestamps();

        });

我应该将插入查询放在 Laravel 中的什么位置?或者我应该处理user_data使用外部应用程序?


非常感谢。


慕无忌1623718
浏览 158回答 3
3回答

慕盖茨4494581

在 RegisterController 里面创建函数$user= User::create([            'name' => $data['name'],            'email' => $data['email'],            'password' => Hash::make($data['password']),        ]);//UserData is the Model of user_data table$user->UserData->create(['job'=>$data['job']]);return $user

跃然一笑

试试这个例子:    use Illuminate\Support\Facades\DB;    $user_data= array(     'name' => $data['name'],     'email' => $data['email'],     'password' => Hash::make($data['password']),    );    $role_data= array(     'user_name' => $data['name'],     'email' => $data['email']    );    $response = DB::table('users')->insert($user_data);    $response = DB::table('role')->insert($role_data);
随时随地看视频慕课网APP
我要回答