让我说我有这个表格(链接到命名路线),其中包含3个文字输入:
{!! Form::open(['route' => 'domain.store'])!!}
{!! Form::text('srv_prefix',null, $attributes = array('class' => 'form-control input-md')) !!}
{!! Form::text('srv_ip',null, $attributes = array('class' => 'form-control input-md')) !!}
{!! Form::text('domain',null, $attributes = array('class' => 'form-control input-md')) !!}
{!! Form::submit('create') !!}
路由在我的控制器上调用此函数:
public function store(CreateDomainRequest $request, Domain $domain)
{
$domain->create($request->all());
return redirect()->route('domain.index');
}
总是作为示例,让我们说我有2个表:domains
来存储我的域名,servers
来存储我的服务器信息(第一和第二文本输入)实际上我设法使用上面提到的控制器在我的第一个表上进行插入。我的问题是如何通过表单上的单个提交在2个表上进行插入?如何处理每个表的请求和控制器?
这是我到目前为止所做的:
1 - 我已经有2个相关模型(Server
和Domain
):
Class Server extends Eloquent {
public function domain(){
return $this->belongsTo('Domain');
}
// $fillable and stuff..
}
-
Class Domain extends Eloquent {
public function servers(){
return $this->hasMany('Server');
}
//
}
2 - 我使用了雄辩,我的表格是相关的。
Schema::table('servers', function($table){
$table->foreign('id_domain')
->references('id_dom')
->on('domains')
->onDelete('cascade');
});
documentation未显示如何使用表单插入相关模型。谢谢你的帮助:)
答案 0 :(得分:0)
以下是我将如何处理这个问题。我假设srv_prefix
和srv_ip
都是Server
的属性。
public function store(CreateDomainRequest $request, Domain $domain, Server $server)
{
// Since domain is the parent, we need to start there.
$domain = $domain->create($request->all());
// Now you can create the server model
$server->fill([
'prefix' => \Input::get('srv_prefix'),
'ip' => \Input::get('srv_ip')
]);
// Now we can attach the server to the domain
$domain->servers()->save($server);
return redirect()->route('domain.index');
}