在Laravel 5.6中同时插入父项和子项

在Laravel 5.6中同时插入父项和子项,laravel,laravel-5,insert,Laravel,Laravel 5,Insert,我试图在users和user\u details表中同时插入数据。见以下代码: 型号: class User extends Authenticatable { public function user_detail() { return $this->hasOne('App\UserDetail', 'user_id'); } } <div class="form-group{{ $errors->has('username') ? ' ha

我试图在
users
user\u details
表中同时插入数据。见以下代码:

型号:

class User extends Authenticatable
{
    public function user_detail() {
        return $this->hasOne('App\UserDetail', 'user_id');
    }
}
<div class="form-group{{ $errors->has('username') ? ' has-error' : ''}}">
    {!! Form::label('username', 'Username:* ', ['class' => 'col-md-4 control-label']) !!}
    <div class="col-md-6">
        {!! Form::text('username', null, ['class' => 'form-control', 'required' => 'required']) !!}
        {!! $errors->first('username', '<p class="help-block">:message</p>') !!}
    </div>
</div>
...
<div class="form-group{{ $errors->has('user_detail[about_me]') ? ' has-error' : ''}}">
    {!! Form::label('user_detail[about_me]', 'About Me: ', ['class' => 'col-md-4 control-label']) !!}
    <div class="col-md-6">
        {!! Form::textarea('user_detail[about_me]', null, ['class' => 'form-control', 'required' => 'required']) !!}
        {!! $errors->first('user_detail[about_me]', '<p class="help-block">:message</p>') !!}
    </div>
</div>
public function store(Request $request) {
    $data = $request->except('password'); //dd($data);
    $user = User::create($data);
    $user->user_detail->create($data['user_detail']);
}
查看:

class User extends Authenticatable
{
    public function user_detail() {
        return $this->hasOne('App\UserDetail', 'user_id');
    }
}
<div class="form-group{{ $errors->has('username') ? ' has-error' : ''}}">
    {!! Form::label('username', 'Username:* ', ['class' => 'col-md-4 control-label']) !!}
    <div class="col-md-6">
        {!! Form::text('username', null, ['class' => 'form-control', 'required' => 'required']) !!}
        {!! $errors->first('username', '<p class="help-block">:message</p>') !!}
    </div>
</div>
...
<div class="form-group{{ $errors->has('user_detail[about_me]') ? ' has-error' : ''}}">
    {!! Form::label('user_detail[about_me]', 'About Me: ', ['class' => 'col-md-4 control-label']) !!}
    <div class="col-md-6">
        {!! Form::textarea('user_detail[about_me]', null, ['class' => 'form-control', 'required' => 'required']) !!}
        {!! $errors->first('user_detail[about_me]', '<p class="help-block">:message</p>') !!}
    </div>
</div>
public function store(Request $request) {
    $data = $request->except('password'); //dd($data);
    $user = User::create($data);
    $user->user_detail->create($data['user_detail']);
}
错误消息:

class User extends Authenticatable
{
    public function user_detail() {
        return $this->hasOne('App\UserDetail', 'user_id');
    }
}
<div class="form-group{{ $errors->has('username') ? ' has-error' : ''}}">
    {!! Form::label('username', 'Username:* ', ['class' => 'col-md-4 control-label']) !!}
    <div class="col-md-6">
        {!! Form::text('username', null, ['class' => 'form-control', 'required' => 'required']) !!}
        {!! $errors->first('username', '<p class="help-block">:message</p>') !!}
    </div>
</div>
...
<div class="form-group{{ $errors->has('user_detail[about_me]') ? ' has-error' : ''}}">
    {!! Form::label('user_detail[about_me]', 'About Me: ', ['class' => 'col-md-4 control-label']) !!}
    <div class="col-md-6">
        {!! Form::textarea('user_detail[about_me]', null, ['class' => 'form-control', 'required' => 'required']) !!}
        {!! $errors->first('user_detail[about_me]', '<p class="help-block">:message</p>') !!}
    </div>
</div>
public function store(Request $request) {
    $data = $request->except('password'); //dd($data);
    $user = User::create($data);
    $user->user_detail->create($data['user_detail']);
}

在上面,我已经发布了我的代码(删除了rest字段。只保留用户表
username
和用户详细信息
about\u me

在我的上述代码中,数据成功插入
用户
表,但插入子表时出错


请查看我的代码并建议我如何在子表中插入记录。

错误的代码是
$user->user\u detail
。它必须是
null
UserDetail
的实例,因为您现在创建了user
$user->user\u detail
它必须是
null
。您必须使用
$user->user\u detail()
而不是
$user->user\u detail
。更正的代码是

public function store(Request $request) 
{
    $data = $request->except('password');
    $user = User::create($data);
    if ($user) {
        $user->user_detail()->create($data['user_detail']);
    }
}

您还必须确保
$data['user\u detail']
是数组,否则可能会重复