我的CakePHP函數中的SaveMany調用有問題。CakePHP SaveMany不保存
下面的代碼是我目前的嘗試。這種工作,它根本沒有任何錯誤,但只有savefield會保存任何數據,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/'));
}
當代碼運行時,它確實與重定向保存meessaged但是當數據庫被選中,只有invoicejoblist_id保存。
還沒有做對嗎?
格倫
更新::
好了,所以我試圖做的是建立一個索票制度,我有多個表之一,其中「invoicedatas」擁有「身份證,workdes,價格,invoicejoblists_id'包含在其中。 ID是密鑰併發送到自動計數。
當用戶開始製作新的發票時,他們會填寫一張保存在其他表格中的表單。而且在這種形式下,他們輸入該作品的工作細節和價格。
然後發送到我現在正在處理的函數,該函數不返回任何錯誤,但不保存。或者我應該說saveMany調用不起作用,saveField工作並保存我從其他表中調用的ID號。
我忘記添加的一點代碼是變量,它們只是我嘗試保存的$ this->數據的基本持有者。
$WorkHolder = $this->data['workdes'];
$PriceHolder = $this->data['price'];
請幫助......
格倫。
好的在這裏,我試着看看我能否更詳細地解釋我自己。
我打算重新做我的工作,以使它更容易爲UI劃分任何形式。爲了解釋,我現在將有一個設置發票作業的表單,例如每個用戶的jobnumber,用戶id和其他位。此信息將進入表呼叫invoicejoblist
第二張表invoicedata只有工作臺和價格以及invociejoblists_id(這將每行與發票作業詳細信息鏈接)。
但無論我做什麼,我都無法保存到工作臺和價格。這是我目前的測試設置的樣子:
MY .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);
}
這些返回並非錯誤,但提交的信息workdes不會救。我把我的模型中的唯一的事情就是:
public $belongsTo = array(
'Invoicejoblists' => array(
'className' => 'Invoicejoblists',
'foreignKey' => 'invoicejoblists_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
我確實有一些檢查,以確保輸入的地方不是空的,但除去他們看到,如果這是我的問題,不知道它這是正確與否。
希望更好的解釋,我已經下降到正確的基本水平,只是測試保存任何數據集,但它仍然不會讓我,是因爲我應該在我的模型中有東西?
任何幫助最受歡迎
格倫。
你在做什麼似乎令人難以置信的矯枉過正。也許如果你解釋你實際想要做的事情,我們可以指出你朝着更好的方向發展。 – Dave
爲什麼在同一個foreach迭代中兩次保存''invoicejoblists_id''?還要注意'saveMany()'用於在一個模型中同時保存許多記錄。所以通常你不需要使用foreach循環,因爲Cake會一次保存所有內容。因此,如果您想獲得答案,您需要指定您的Invoicedata模型的外觀。因爲我無法弄清楚你想要保存什麼,比如'''''''和''價格''是同一張表中的兩列。 – Ziemo