我使用Kohana 3.0,我的任務是在數據庫中插入數據。問題是我需要插入多個條目(所以......在原始SQL中 - 多個查詢)。我有來自$_POST
的字段project_id
,amount
和financiers
(這是一個數組)。如何使用Kohana ORM插入多個條目到數據庫?
在控制器我有這樣的事情:在我的ORM模型稱爲save_many()
$model_for_financiers->values($_POST);
$model_for_financiers->save_many();
我創建方法。
public function save_many() {
foreach ($this->financiers as $financier_id) {
$this->created_at = time();
$this->amount = $this->amount * 100;
$this->financier_id = $financier_id;
$this->save();
$this->reset();
}
}
...並添加了financiers
作爲被忽略的列。
有兩個不必要的行爲(或者我應該怎麼稱呼他們?)在我的代碼:
只有最後一個條目插入到數據庫中(也不要緊多少ID在
financiers
),amount
與financiers
中的ID相乘的次數倍增。例如,如果該數組中有兩個ID,它將乘以100'(最後兩個零是不需要的)。
你能幫助我嗎?謝謝你的建議。
編輯:
這纔是我的第二個觀點。簡而言之,在控制器中循環,每次 - 對象的新實例。
控制器:
foreach ($_POST['financiers'] as $financier_id) {
$model_for_financiers = ORM::factory('Vcn_Project_Financier');
$model_for_financiers->values(array(
'amount' => $_POST['amount'],
'project_id' => $project_id,
'financier_id' => $financier_id
));
if ($model_for_financiers->check()) {
$model_for_financiers->save();
}
}
型號:
public function save() {
$this->created_at = time();
$this->amount = $this->amount * 100;
// $this->reset();
parent::save();
}
我真的不知道是什麼他媽的,但在模型的save()
,當我嘗試var_dump()
我有任何變量傳遞給values()
,它說NULL
。好消息是它現在在數據庫中插入正確的條目數。壞消息:傳遞給values()
的任何數據都是空的。
這裏的幫助真的很感謝。 :)
編輯#2:
第三解決方案,它不工作。:(
控制器:
$model_for_financiers = ORM::factory('Vcn_Project_Financier');
$model_for_financiers->save_many($_POST['amount'], $_POST['financiers'], $project_id);
型號:
public function save_many($amount, $financiers, $project_id) {
foreach ($financiers as $financier_id) {
$this->values(array(
'amount' => $amount,
'financier_id' => $financier_id,
'project_id' => $project_id
));
if ($this->check()) {
$this->created_at = time();
$this->amount = $amount * 100;
$this->save();
}
$this->reset();
}
}
它插入一個只有一個入口,而忽略傳遞給values()
在溶液#2,所有
會發生什麼?
謝謝,這**真的**幫助! :)太糟糕了,沒有什麼可以像Kohana那樣幫助Kohana的。 :( – daGrevis