【发布时间】:2020-04-08 15:22:53
【问题描述】:
用户注册后我需要帮助将数据插入多个表 假设我有下面的代码,创建新用户并将数据存储到多个表中的最佳方法是什么。
注册用户特征
<?php
namespace App\Traits;
use App\User;
use App\Profile;
use App\Account;
use Keygen;
trait RegisterUser
{
public function registerUser($fields)
{
$user = User::create([
'username' => $fields->username,
'accno' => $this->generateAccountNumber(),
'email' => $fields->email,
'password' => $fields->password = bcrypt(request('password')),
'roles' => $fields->roles,
'activation_code' => $this->generateToken()
]);
Profile::create([
'accno' => $user->accno,
'username' => $user->username,
'acc_type' => $fields->acc_type,
'firstname' => $fields->firstname,
'lastname' => $fields->lastname,
'nationality' => $fields->nationality,
'occupation' => $fields->occupation,
'address' => $fields->address,
'city' => $fields->city,
'state' => $fields->state,
'zipcode' => $fields->zipcode,
'phoneno' => $fields->phoneno,
'dob' => $fields->dob,
'gender' => $fields->gender,
'martial_status' => $fields->martial_status,
'user_image' => $fields->user_image,
]);
Account::create([
'accno' => $user->accno,
'username' => $user->username,
]);
return $user;
}
使用这个registrationController;
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Http\Requests\RegistrationRequest;
use App\Traits\RegisterUser;
class RegistrationController extends Controller
{
use RegisterUser;
public function show()
{
return view('auth/register');
}
public function register(RegistrationRequest $requestFields)
{
//calling the registerUser method inside RegisterUser trait.
$user = $this->registerUser($requestFields);
return redirect('/login');
}
}
但是现在我每次尝试注册用户时,都会得到一个找不到页面(404)的错误,并且数据只插入到用户表中。
【问题讨论】:
-
你的模型是什么样的?我认为您应该使用请求中的字段配置
fillable和guarded属性。这是文档:laravel.com/docs/6.x/eloquent#mass-assignment -
请帮助我使用它来解决我的问题,我已经在我的用户、配置文件和帐户模型中包含了受保护的属性,并且我的可填充是正确的
-
你的模型是什么样的?你是否在 laravel 的日志文件中出现错误?
-
如何检查错误?
-
日志文件的默认目录是ROOT -> storage -> logs