在一个Laravel项目中,我想使用Laravel身份验证表'users‘来拥有一个外部字段键,指向另一个表作为抽象层。有没有办法强制用户注册将一行添加到该抽象层表中?它的模型很简单,只有一个属性。
我的数组:`保护函数创建(数组$data) {
Rekvirent::create([
'rekvirent' => $data['initialer'],
]);
return User::create([
'initialer' => $data['initialer'],
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}`我从mysql得到一条错误消息,它有一个外键错误,表明rekvirent在插入users表中的行时没有被插入。
我的rekvirent模型如下
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Rekvirent extends Model {
public $timestamps = false; // dumps timestamps from table
public $incrementing = false; // if no autoincrementing
protected $table = 'rekvirent'; // change default snake-case name
protected $keyType = 'string'; // if key is not integer
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'initialer',
];
/*
public function user() {
return $this->hasOne('App\User');
}
*/
}发布于 2019-02-20 06:43:06
如果您希望在新用户注册后执行某些操作,则可以侦听事件。
如果您看到Illuminate/Foundation/Auth/RegistersUsers.php:
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}您会注意到laravel在内部发出了一个事件Illuminate\Auth\Events\Registered。您可以监听该事件,然后执行所需的操作,如插入到单独的表中等。
有关侦听事件的信息,请参阅event documentation。
https://stackoverflow.com/questions/54772443
复制相似问题