我有两个表products
和shipments
以及带有字段product_shipment
的数据透视表product_id and shipment_no
。在数据透视表中,可以有一个货件编号,例如。 #4562包含2个或更多产品。这是我想要实现的目标。
现在这就是我的代码的工作方式。当我选择产品hammer
时,我可以检索hammer
的ID。当我选择其他产品screwdrivers
的ID时,它会替换hammer
的ID,而不是同时存储它们。
插入我的数据后,我希望在数据透视表
中找到一些这样的内容产品表
product_id name
1 hammer
2 screwdriver
出货表
shipment_no courrier
4562 MaerskLine
product_shipment - Pivot
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" />'
}
如何将数据保存到我的数据库中
控制器
$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,并使其看起来像我pivot table
中的内容?感谢您的帮助
答案 0 :(得分:2)
首先更改输入名称,如下所示:
function productSelected(product)
{
$(".panel").append(
'<input type="text" value='+product.id+' " id="product'+product.id+'"
name="products[]" />'
}
您现在应该在控制器中获得包含所有选定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'));
当然,您的manyToMany
模型中Product
与Shipment
有{
u 'body': u '{"first_name":"ABCDE", "last_name": "john"}', u 'resource': u '/HelloPython', u 'requestContext': {
u 'resourceId': u 'kl9',
u 'apiId': u '81s0q',
u 'resourcePath': u '/HelloPython',
u 'httpMethod': u 'POST',
u 'requestId': u 'e1c72ee6-7-9059-1bd746727831',
u 'path': u '/prod/HelloPython',
u 'accountId': u 'cccc',
u 'identity': {
u 'apiKey': u '',
u 'userArn': None,
u 'cognitoAuthenticationType': None,
u 'accessKey': None,
u 'caller': None,
u 'userAgent': u 'curl/7.54.0',
u 'user': None,
u 'cognitoIdentityPoolId': None,
u 'cognitoIdentityId': None,
u 'cognitoAuthenticationProvider': None,
u 'sourceIp': u 'ccccc',
u 'accountId': None
},
u 'stage': u 'prod'
}, u 'queryStringParameters': None, u 'httpMethod': u 'POST', u 'pathParameters': None, u 'headers': {
u 'Content-Type': u 'application/json',
u 'Via': u '1.1 07c960c5d.cloudfront.net (CloudFront)',
u 'CloudFront-Is-Desktop-Viewer': u 'true',
u 'CloudFront-Is-SmartTV-Viewer': u 'false',
u 'CloudFront-Forwarded-Proto': u 'https',
u 'X-Forwarded-For': u 'xxx, cccc',
u 'CloudFront-Viewer-Country': u 'US',
u 'Accept': u '*/*',
u 'User-Agent': u 'curl/7.54.0',
u 'X-Amzn-Trace-Id': u 'Root=1-59f4e74a9fecde',
u 'Host': u '81s0q.execute-api.us-east-1.amazonaws.com',
u 'X-Forwarded-Proto': u 'https',
u 'X-Amz-Cf-Id': u 'GXnihIB370EYguOCiGYEA==',
u 'CloudFront-Is-Tablet-Viewer': u 'false',
u 'X-Forwarded-Port': u '443',
u 'CloudFront-Is-Mobile-Viewer': u 'false'
}, u 'stageVariables': None, u 'path': u '/HelloPython', u 'isBase64Encoded': False
}
的关系。