我有两个表products
和shipments
以及带有字段product_id和shipment_no
的数据透视表product_shipment
。在数据透视表中,可以有一个发货编号,例如。 #4562 包含 2 个或更多产品。这是我想要实现的目标。
现在这就是我的代码的工作原理。当我选择产品hammer
时,我能够检索hammer
的ID。当我选择另一个产品 screwdrivers
的 id 时,它会替换 hammer
的 id,而不是同时存储两者。
插入数据后,我希望在我的数据透视表中找到一些内容
产品表
product_id name
1 hammer
2 screwdriver
出货量表
shipment_no courrier
4562 MaerskLine
产品发货 - 枢轴
shipment_no product_no
4562 1
4562 2
这是我选择产品复选框的位置
HTML
<input onclick="return productSelected(this)" type="checkbox"
id="{!! $product->id !!}" name="{!! $product->name !!}" />
当我选择复选框时如何选择和检索我的产品 ID
JS
function productSelected(product)
{
$(".panel").append(
'<input type="text" value='+product.id+' " id="product_id" name="product_id" />'
}
如何将数据保存到数据库中
Controller
$product_id = Input::get('product_id');
$product_selected = Product::all()->where('id',$product_id)->first();
$shipment_details = new Shipment(array(
'shipment_no' => $request->get('shipment_no'),
'courrier' => $request->get('courrier'),
));
$product_id->shipments()->save($shipment_details);
发货模式
public function products()
{
return $this->belongsToMany('App\Product')
->withTimestamps();
}
产品型号
public function shipments()
{
return $this->belongsToMany('App\Shipment')
->withTimestamps();
}
如何获取我选择的产品的所有 ID,并使其看起来像我的数据透视表
中的内容?感谢您的帮助
最佳答案
首先更改输入名称,如下所示:
function productSelected(product)
{
$(".panel").append(
'<input type="text" value='+product.id+' " id="product'+product.id+'"
name="products[]" />'
}
您现在应该在 Controller 中获得具有所有选定 ID 的阵列产品。所以你可以这样做:
$shipment_details = new Shipment(array(
'shipment_no' => $request->get('shipment_no'),
'courrier' => $request->get('courrier'),
));
$shipment_details->save();
$shipment_details->products()->sync($request->get('products'));
当然,您的 Shipment
模型中应该与 Product
具有 manyToMany
关系。
关于javascript - 根据 ID 插入多个项目 - Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994146/