سلام اساتید
من میخوام وقتی کاربر ثبت نام میکنه و ثبت نام موفق بود به جز اینکه اطلاعاتش توی جدول users میره
آیدی اون کاربر به صورت اتوماتیک در یک جدول دیگه به اسم user_profiles هم ذخیره بشه
خب من با کد زیر اینکارو کردم و ذخیره انجام میشه ولی به خطای
TypeError
Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, null given, called in C:\wamp64\www\nsms\vendor\laravel\ui\auth-backend\RegistersUsers.php on line 36
برمیخورم ولی بازم کاربر ثبت نام میشه ولی خطا دارم
اینم کدهام
مدل جدول Users
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password', 'admin_id',
];
protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
public function user_profile(): \Illuminate\Database\Eloquent\Relations\HasOne
{
return $this->hasOne(user_profile::class);
}
public function user_log(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(user_log::class);
}
public function user_panel(): \Illuminate\Database\Eloquent\Relations\HasOne
{
return $this->hasOne(user_panel::class);
}
public function user_access_has_user(): \Illuminate\Database\Eloquent\Relations\HasMany
{
return $this->hasMany(user_access_has_user::class);
}
}
مدل جدول user_profiles
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class user_profile extends Model
{
protected $fillable = [
'user_id',
'nameFamily',
];
public function user()
{
return $this->belongsTo(User::class);
}
}
فایل App/Http/Controllers/Auth/RegisterController
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\User;
use App\user_profile;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\Console\Input\Input;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest');
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$user_profile = new user_profile();
$user->user_profile()->save($user_profile);
}
}
نسخه لاراول 7 هست
جدول user_profiles با ستون user_id به جدول users ستون id متصل شده به صورت foreinKey و onDelete cascade
احساس میکنم مشکل از این 2 خطه :
$user_profile = new user_profile();
$user->user_profile()->save($user_profile);
احیانا در خط اخر به جای $user_profile
نباید $user
باشه؟؟؟ من اینطوری فکر میکنم چون شما باید اطلاعات یوزر رو پاس بدین تا سیو شه
یا کاربر رو بعد از ذخیره لاگین کنید و اینطوری عمل کنید :
$user->user_profile()->save(َAuth::user());
تست کنید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟