私はLaravel Authを使用してユーザーを登録できます。私が現在しようとしているのは、ユーザーが登録した後(特別な役割が選択されている場合)、関連するユーザーIDを保持している別のテーブル(ユーザー)に挿入された行があります。これは、そのためのコードです:Laravelは最新のユーザーIDを取得します
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use App\Complaint;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after login/registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'username' => 'required|unique:users',
'role' => 'required'
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
$user = new User;
$user->name = $data['name'];
$user->email = $data['email'];
$user->username = $data['username'];
$user->password = bcrypt($data['password']);
$user->role = $data['role'];
$user->templateURL = "";
/*$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'username' => $data['username'],
'password' => bcrypt($data['password']),
'role' => $data['role'],
'templateURL' => ""
]);*/
$user->save();
if($data['role'] == 'Verkäufer'){
$complaintRow = Complaint::create([
'user_id' => $user->id,
'complaintCount' => 0
]);
}
switch($data['role']){
case 'Käufer':
$user->attachRole(2);
break;
case 'Verkäufer':
$user->attachRole(3);
break;
default:
$user->attachRole(2);
break;
}
return $user;
}
}
しかし、それは正しく動作していない、ユーザーが苦情の行と同様に挿入され、何とか$user->id
がNULLであるように思わ、列は常に0からuser_id
セットを持っています。なぜこれがこのようなものになるのでしょうか?
EDIT:私はそれが今働いてしまった...それは実際に私は投稿のコードではなかった、私は常に0が0ので、そこにいた理由です、complaint
テーブルにuser_id
フィールド充填可能にしませんでしたデフォルト値だったので、設定しなかっただけです。
どうもありがとうございました。
ええ、私は提供されたコードでコメントアウトしたコードのthats、これは同じ問題で終わるを助ける – nameless
しかし、どういうわけか、記入式が助けたことを願っています私は問題を解決するために(たとえそれが 'User'モデルについてではなかったとしても、 – nameless