Php Laravel在保存到数据库时间接修改重载属性错误

Php Laravel在保存到数据库时间接修改重载属性错误,php,laravel,Php,Laravel,我想用它的关系来拯救我的雄辩模型 根据文档,这就是保存它的方式 $post = App\Post::find(1); $post->comments[0]->message = 'Message'; $post->comments[0]->author->name = 'Author Name'; $post->push(); 这是我的初始代码: $user = new User; $user->na

我想用它的关系来拯救我的雄辩模型

根据文档,这就是保存它的方式

    $post = App\Post::find(1);

    $post->comments[0]->message = 'Message';
    $post->comments[0]->author->name = 'Author Name';

    $post->push();
这是我的初始代码:

    $user = new User;
    $user->name = request()->name;
    $user->username = request()->username;
    $user->email = request()->email;
    $user->password = Hash::make(request()->password);
    $user->profile->account_number = request()->account_number;
    $user->push();
它给我带来了“间接修改重载属性”的错误

我的解决办法是:

    $user = new User;
    $user->name = request()->name;
    $user->username = request()->username;
    $user->email = request()->email;
    $user->password = Hash::make(request()->password);
    $user->save();

    $profile = new Profile;
    $profile->user_id = $user->id;
    $profile->account_number = request()->account_number;
    $profile->save();

我的第一个代码中缺少了什么?我真的认为使用push()方法会像这样工作。

在第一个示例中,配置文件还不存在。您正试图修改
null
的属性

$user->profile
//空的
$user->profile->account\u number
//重载属性的间接修改
但是,在保存用户后,可以像这样使用关系

/。。。
$user->save();
$user->profile()->保存(新配置文件([
“帐号”=>请求()->帐号
]));
一旦这两个模型都存在,您就可以像这样使用关系

$user->profile->account\u number=request()->account\u number;
$user->push();

Nope,这仍然会间接修改重载属性App\User::$profile没有效果错误。我回滚了一些编辑,因为我试图绕过您的原始方法。请检查最新更新。除非两个模型都存在(已保存),否则不能使用最后一个方法。