默认模型:
{!! Form::model($stock, ['route' => ['stock.update_variant', $stock->id],'method'=>'put']) !!}
{!! Form::close() !!}
我想做以下;
{!! Form::model($stock, $new_variant, ['route' => ['stock.update_variant', $stock->id],'method'=>'put']) !!}
{!! Form::close() !!}
这是可能的吗?
我不能确定您可以或不能这样做,因为Laravel Blade表格的文档已被慢慢放弃,实际上甚至不再由Taylor Otwell管理(最后更新是针对Laravel 5.4(。然而!您确实有其他选择!
如果您生成了库存实例并在数据库查询中使用JOIN,则可以加载带有两个表值的$库存对象,因此只需要在您的表单方法中使用$ Stock对象 ->更改它是名称 $ formdata 不困惑自己。
例如:
您当前正在这样做:
$stock = Stock::where('x', 'y')->findOrFail('1');
$new_variant = NewVariant::where('z', 'a')->findOrFail($stock->id);
return $view('/')->with([compact('stock'), compact('new_variant')]);
而是使用JOIN查询:
$formData = Stock::where('x', 'y')
->join('new_variants', 'stocks.id', '=', 'new_variants.stock_id')
->select('stocks.*', 'new_variants.*')
->findOrFail('1');
return $view('/')->with(compact('formData'));
这基本上是说在x = y的位置获取库存,并通过与相应的库存ID匹配New_variants表中的相应 new variant 。我相信,如果您希望返回所有字段,则选择方法是多余的。现在,您可以简单地访问模型绑定中的 $formData
对象,并且应该起作用。
我会警告您,说这是一个自定义解决方案,并且确实具有自己的缺点。最大的是表单请求将不再与模型关联,因此在提交表单时,您将不得不将数据冲突,以确保使用适当的信息更新适当的模型。此外,如果两个表包含相同名称的字段,则必须在查询中的选择方法中对此进行反调解。如果是这种情况
我希望这至少将您指向正确的方向:(