在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']
是数组,否则可能会重复