如何获取Laravel中的用户模型属性到class评估者
How to obtain the user model's attributes in Laravel via class accessor
我正在尝试在 RegisterController(Laravel Auth 包 的一部分)中创建用户的同时创建客户,如果该用户注册为客户。但是,我尝试通过将以下代码添加到我的用户模型来向用户 class 添加 'accessor',以访问 user_id 属性,但访问器似乎没有按预期工作。 (参见:https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor)
public function getUserIdAttribute($user_id)
{
return $user_id;
}
然后我尝试使用此函数直接从 RegisterController 中的模型访问它:
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'username' => $data['username'],
'password' => Hash::make($data['password']),
'utype' => $data['utype'],
]);
if ($data['utype'] == "customer") {
Customer::create([
'user_id' => $user->user_id,
]);
}
return $user;
}
出于某种原因,$user->user_id
returns NULL。问题是什么?为什么没有正确应用访问器?
在@lagbox 的帮助下,我弄清楚了问题所在。事实证明,列名只是 'id'.
我正在尝试在 RegisterController(Laravel Auth 包 的一部分)中创建用户的同时创建客户,如果该用户注册为客户。但是,我尝试通过将以下代码添加到我的用户模型来向用户 class 添加 'accessor',以访问 user_id 属性,但访问器似乎没有按预期工作。 (参见:https://laravel.com/docs/8.x/eloquent-mutators#defining-an-accessor)
public function getUserIdAttribute($user_id)
{
return $user_id;
}
然后我尝试使用此函数直接从 RegisterController 中的模型访问它:
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'username' => $data['username'],
'password' => Hash::make($data['password']),
'utype' => $data['utype'],
]);
if ($data['utype'] == "customer") {
Customer::create([
'user_id' => $user->user_id,
]);
}
return $user;
}
出于某种原因,$user->user_id
returns NULL。问题是什么?为什么没有正确应用访问器?
在@lagbox 的帮助下,我弄清楚了问题所在。事实证明,列名只是 'id'.