方法Illuminate \ Database \ Query \ Builder :: profilesInfoModel不存在。 // RegisterController.php

时间:2018-08-03 03:18:11

标签: laravel

除了创建用户外,我还需要保存一些数据,这就是我在RegisterController.php中试图做的事情:

protected function create(array $data)
{
    if (isset($data['checkbox'])) {
        $type = 1;
        $available = 1;
    } else {
        $type = 0;
        $available = 0;
    }

     $user =  User::create([
        'name' => $data['name'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'type' => $type,
        'available' => $available,
        'company' => $data['company'],
        'job' => $data['job'],
    ]);

    $user->profilesInfoModel()->create([
        'bio' => $data['bio'],
        'site' => $data['site'],
        'location' => $data['location'],
        'education' => $data['education'],
    ]);

    return $user->with('profilesInfoModel');


}

User.php(Model)与one to one具有profilesInfoModel关系(是的,我知道我应该更改模型名称以使其更舒适)。

但是尝试注册用户后...我收到此错误消息:Method Illuminate\Database\Query\Builder::profilesInfoModel does not exist.

实际上是怎么回事?

2 个答案:

答案 0 :(得分:2)

关系应该是这样

用户模型

public function profile()
{
    return $this->hasOne(ProfileInfo::class, 'user_id');
}

假设您将ProfileInfo作为配置文件模型,并将user_id作为外键引用usersid字段

现在您可以像这样从$user创建个人资料

$user->profile()->create([
    'bio' => $data['bio'],
    'site' => $data['site'],
    'location' => $data['location'],
    'education' => $data['education'],
]);

$user->load('profile'); //lazy eager load

return $user;

答案 1 :(得分:0)

1.in App \ Model \ User

public function profilesInfoModel()
{
    return $this->hasOne(App\Model\User);
}

2。致电

use App\Model\User

在RegisterController中