【发布时间】:2016-12-05 13:04:42
【问题描述】:
到目前为止,我已经在这里找到了答案,并且不需要问任何事情。但是这个问题真的很困扰我。这是情况。我有一个动态发票表格。表单中的帖子将保存到两个不同的表格中
- 发票(其中存储发票的详细信息,例如 member_id、折扣、到期日、备注和时间戳)
- invoiceitems(invoice_id、itemdescription、数量、费率、时间戳)
为了实现这一点,这是我存储发票的方法
public function store(InvoiceRequest $request)
{
//get necessary details for invoice table
$datainvoice = array(
'member_id' => $request->input('member_id'),
'duedate' => $request->input('duedate'),
'discount' => $request->input('discount'),
'remarks' => $request->input('remarks'),
//'gtotal' => $request->input ('gtotal'),
);
//save result of invoice
$resultforinvoice = Invoice::create($datainvoice);
// ready all data of invoice items
$datainvoiceitem = array(
'description' => $request->input('description'),
'rate' => $request->input('rate'),
'quantity' => $request->input('quantity'),
'invoice_id' => $resultforinvoice->id,
);
// insert invoice along with invoice_id
Invoiceitem::create($datainvoiceitem);
return redirect('members');
}
其他信息:
成员和发票之间的关系:: member-has-many-invoices, invoice-belongs-to-single-member
invoice 和 invoiceitems 之间的关系:: invoice-has-many-items, 一个项目属于一张发票
部分动态形式:
<td> 1 </td>
<td><textarea type="text" name='description[0][description]' class="form-control"/></textarea> </td>
<td><input type="text" name='quantity[0][quantity]' class="form-control"/></td>
<td> <input type="text" name='rate[0][rate]' class="form-control"/> </td>
我现在收到的错误传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定整数,在 C:\xampp\htdocs\study\vendor\laravel\framework\src 中调用\Illuminate\Database\Query\Grammars\Grammar.php 在第 719 行并已定义
更新
当我尝试返回 invoiceitems 的输入以检查发生了什么时,我得到一个如下所示的数组
{
"description": [
{
"description": "desc1"
},
{
"description": "desc2"
}
],
"rate": [
{
"rate": "11"
},
{
"rate": "22"
}
],
"quantity": [
{
"quantity": "1"
},
{
"quantity": "2"
}
],
"invoice_id": 41
}
伙计们,请告诉我我在哪里失踪。我也试过在 laracast 中问这个问题,目前已经有几个小时没有了,希望有人能指出我正确的方向。 Here is the laracast link.
【问题讨论】:
-
根据您的输入名称
$request->input('description')返回一个数组而不是单个值。之后,您尝试将此数组保存为列值。我不确定,但我认为这是你的问题。 -
@Phargelm 我正在尝试使用 transpose() 对其进行排序,一旦我有一个正常运行的代码,我将保持更新
标签: php laravel eloquent laravel-5.2 bulkinsert