我正在尝试添加用户个人资料,我的问题是我无法访问我的相关模型。
我想要的是为用户添加其他信息。在使用修补程序时,我可以添加配置文件。这就是我修补的内容:
$user = new App\User;
$user->username = 'sampleusername';
$user->name = 'Bruce Lee';
$user->email = 'brucelee@sample.com';
$user->password = bcrypt('password');
$user->save();
$profile = new App\UserProfile;
$profile->phone = '123456789';
$profile->address = 'unknown';
$user->profile()->save($profile);
通过这种方法,我可以添加其他信息但是当我修改了 RegisterController
我收到了这个错误:
Class 'App\Http\Controllers\Auth\App\UserProfile' not found
这是我修改过的内容:
protected function create(array $data)
{
$user = User::create([
'name' => title_case($data['lastname']) . ' ' . title_case($data['firstname']),
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
if($user) {
$profile = new App\UserProfile;
$profile->phone = $data['phone'];
$profile->address = $data['address'];
$user->profile()->save($profile);
return $user;
}
}
你能帮我解决这个问题吗?
答案 0 :(得分:2)
您应该使用完整命名空间。您可以将use
子句添加到控制器的顶部:
use App\User;
或者您可以使用完整命名空间:
App\User::create();
<强>更新强>
在评论中,您已询问有关创建用户的问题。这样做:
$user = User::create([
'name' => title_case($data['lastname']) . ' ' . title_case($data['firstname']),
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$user->profile()->create(['phone' => $data['phone'], 'address' => $data['address']]);
return $user;
答案 1 :(得分:1)
您似乎忘记在当前控制器的命名空间之后添加:use App\User;
。
最后你应该有:
namespace App\Http\Controllers\Auth\App;
use App\User; <- this
class UserProfile{...}
默认情况下,php尝试解析当前命名空间中的类
答案 2 :(得分:0)
像这样更新你的代码:
$profile = new \App\UserProfile;
$profile->phone = $data['phone'];
$profile->address = $data['address'];
$user->profile()->save($profile);
return $user;
或者在php控制器文件中namespace
之后,添加:use App\User;
和use App\UserProfile
。然后,您就可以在代码中使用User
和UserProfile
而不使用App
命名空间。