我如何绑定多个$变量表格模型laravel



默认模型:

{!! 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对象,并且应该起作用。

我会警告您,说这是一个自定义解决方案,并且确实具有自己的缺点。最大的是表单请求将不再与模型关联,因此在提交表单时,您将不得不将数据冲突,以确保使用适当的信息更新适当的模型。此外,如果两个表包含相同名称的字段,则必须在查询中的选择方法中对此进行反调解。如果是这种情况

我希望这至少将您指向正确的方向:(

最新更新