我的CakePHP函数中的SaveMany调用有问题。
下面的代码是我当前的尝试。这种方法现在可以工作了,它根本不会产生任何错误,但只有保存字段会保存任何数据,saveMany,尽管它没有返回错误也不保存数据?
请帮帮忙?
$InvoiceArrayData = array(
array('Invoicedata' => array('workdes' => $WorkHolder)),
array('Invoicedata' => array('price' => $PriceHolder)),
);
foreach($InvoiceArrayData as $InvoiceArrayKey => $InvoiceArrayValue) {
debug($InvoiceArrayValue);
$this->Invoicedata->saveMany($InvoiceArrayValue['Invoicedata']);
$this->Invoicedata->saveField('invoicejoblists_id', $MyJobIDInput);
$this->Invoicedata->saveField('invoicejoblists_id', $MyJobIDInput);
$this->Session->setFlash('Invoice Data Saved', 'default', array(), 'good');
//$this->redirect($this->Auth->redirect('/AdminInvoiceSystem/'));
}当代码运行时,它使用保存的消息重定向,但当检查数据库时,只保存invoicejoblist_id。
有没有没做过的事对吗?
格伦
更新::
好的,所以我要做的是建立一个发票系统,我有一些表,其中一个'invoicedatas‘,其中包含'id,workdes,price,invoicejoblists_id’。ID是密钥,并被发送到自动计数。
当用户开始开具新发票时,他们填写一个表单,该表单保存在其他表中。还可以在此表单中输入工作详细信息和该工作的价格。
然后将其发送到我现在正在处理的函数,该函数不返回错误,但不保存。或者我应该说saveMany调用不起作用,saveField起作用并保存我从其他表中调用的ID号。
我忘记添加的一小段代码是var,它们只是我试图保存的$this->数据的基本持有者。
$WorkHolder = $this->data['workdes'];
$PriceHolder = $this->data['price'];请帮帮忙......
格伦。
好了,我试着看看我是否能更详细地解释我自己。
我将重新做我的工作,让它更容易为UI做计划,而不是任何东西。为了解释,我现在将有一个表单来设置发票作业,例如每个用户的jobnumber、用户id和其他位。此信息将进入名为invoicejoblist的表中
第二个表invoicedata只保存工作和价格以及invociejoblists_id (这会将每一行与发票作业详细信息链接起来)。
但无论我怎么做,我都不能把它存到工作量和价格上。下面是我当前的测试设置:
我的.cpt文件:
$InvoiceMake = $this->Form->create('Invoice', array('url'=>'/InvoiceSet/', 'id' => 'InvoiceSet', 'inputDefaults' => array('div' => false) ) );
$InvoiceMake .= "<div id=\"InvoiceDataInput\">Please Input Description<br />";
$InvoiceMake .= $this->Form->textarea('Invoicedata.0.workdes');
$InvoiceMake .= $this->Form->textarea('Invoicedata.1.workdes');
$InvoiceMake .= $this->Form->textarea('Invoicedata.2.workdes');
$InvoiceMake .= $this->Form->textarea('Invoicedata.3.workdes');
$InvoiceMake .= $this->Form->textarea('Invoicedata.4.workdes');
$InvoiceMake .= "</div>";
$InvoiceMake .= $this->Form->submit('Make Invoice', array('div' => false, 'class' => 'ButtonInvoice'));
$InvoiceMake .= $this->Form->end();
echo $InvoiceMake;我在控制器中的测试函数:
function test() {
debug($this->data);
$HoldeME = $this->data;
$this->loadModel('Invoicedata');
$this->Invoicedata->saveAll($HoldeME);
}这些不会返回错误,但提交的工作信息将不会保存。我在我的模型中唯一放入的东西是:
public $belongsTo = array(
'Invoicejoblists' => array(
'className' => 'Invoicejoblists',
'foreignKey' => 'invoicejoblists_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);我确实做了一些检查,以确保输入不是空的,但删除它们,看看这是否是我的问题,不确定它是正确的还是错误的。
希望这能得到更好的解释,我已经到了正确的基本级别,只测试保存任何数据集,但它仍然不允许我,这是因为我的模型中应该有一些东西吗?
欢迎任何帮助
格伦。
发布于 2013-06-25 05:01:52
我真的不知道你在问什么,但我是在偷偷摸摸。
您应该能够在单个saveAll()中保存一个项目和任意多个子/相关项目。
只需确保您的表单(或数据)按照CakePHP book中的丰富指令正确格式化即可。
举个例子:
echo $this->Form->create('Invoice');
echo $this->Form->input('name');
echo $this->Form->input('Price.0.amount');
echo $this->Form->input('Price.1.amount');
echo $this->Form->end('Submit');然后,当您执行saveAll() (或saveMany() -随便什么)时,您的发票将节省两个价格(假设Invoice与Price相关)。
如果您尝试手动构建数据,但不知道应该如何格式化数据,则始终可以创建一个类似于上面的表单,提交它,然后对结果执行debug()操作,以查看CakePHP将如何格式化它。
希望这能帮你弄清楚。
https://stackoverflow.com/questions/17276442
复制相似问题