无法使用Laravel访问相关模型

时间:2017-01-27 07:36:35

标签: php laravel

我正在尝试添加用户个人资料,我的问题是我无法访问我的相关模型。

我想要的是为用户添加其他信息。在使用修补程序时,我可以添加配置文件。这就是我修补的内容:

$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;

        }

    }

你能帮我解决这个问题吗?

3 个答案:

答案 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。然后,您就可以在代码中使用UserUserProfile而不使用App命名空间。