我正在使用 Kohana 3.0,我的任务是在数据库中插入数据。问题是我需要在其中插入一个以上的条目(所以......在原始 SQL 中 - 不止一个查询)。我有 fields project_id
,amount
并且financiers
(这是一个数组)来自$_POST
.
在控制器中,我有这样的东西:
$model_for_financiers->values($_POST);
$model_for_financiers->save_many();
我创建了save_many()
在我的 ORM 模型中调用的方法。
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
乘以 ID 的倍数financiers
。例如,如果该数组中有两个 ID……它将乘以 100' 00(最后两个零是不需要的)。
你们能帮我解决这个问题吗,伙计们?谢谢指教。
编辑:
我的第二个想法来了。简而言之,在控制器中循环,每次 - 对象的新实例。
控制器:
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 中一样。
怎么了?