私はKohana 3.0を使用しています。私の仕事はデータをデータベースに挿入することです。問題は、その中に複数の項目を挿入する必要があることです(つまり、未処理のSQLに複数のクエリがあるため)。フィールドproject_id
、amount
およびfinanciers
(これは配列です)は、$_POST
からです。コントローラで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
が追加されました。
(私はそれらを呼び出す必要があるか、どのように?)2人の、不要な振る舞いがあります。私のコードで:最後のエントリのみがデータベースに挿入されている
(
financiers
しているどのように多くのIDは問題ではありません。 )、amount
のIDには、financiers
のIDが何度も掛けられます。たとえば、その配列に2つのIDがある場合は、100 '(最後の2つは不要です)と掛け合わせます。
私はこれを手伝ってもらえますか?アドバイスをありがとう。
編集:
ここでは私の第二の考えが来ます。手短に言えば、コントローラと各回のオブジェクトの新しいインスタンスにループします。
コントローラー:
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();
}
}
モデル:私は私が持っている任意の変数をvar_dump()
しようとすると、
public function save() {
$this->created_at = time();
$this->amount = $this->amount * 100;
// $this->reset();
parent::save();
}
私は本当に、何のF * ckのを知っているが、モデルのsave()
ではありません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();
}
}
それは1つのエントリのみを挿入し、溶液#2のようにvalues()
に渡されたものをすべて無視起こる
何。 ?
ありがとう、この**本当に**助け! :) Kohanaを助けることができるあなたのようなものは、それほどたくさんありません。 :( – daGrevis