が何$a['stored']
を表しているのかわかりませんが、Datamapper のデフォルトは何もありません。
逆にポストキーをループしてみませんか?
foreach ($_POST as $key => $val)
{
$t->$key = $this->input->post($key);
}
$t->save();
注: 存在しない列は、Datamapper によって無視されます。
私は実際にこれのために Datamapper 拡張機能を書きました:
class DM_Data {
function assign_postdata($object, $fields = NULL)
{
// You can pass a different field array if you want
if ( ! $fields)
{
$fields = $object->validation;
}
foreach ($fields as $k => $data)
{
$rules = isset($data['rules']) ? $data['rules'] : array();
if ( ! isset($_POST[$k])) continue;
// Cast value to INT, usually for an empty string.
if (in_array('integer', $rules))
{
$object->$k = (integer) $_POST[$k];
}
// Do other manipulation here if desired
else
{
$object->$k = $_POST[$k];
}
}
return $object;
}
}
を使用$t->assign_postdata()->save()
し、必要に応じてフィールドの配列を渡して関数に更新することができます (datamapper 検証形式)。しかし、なぜそれを使用するのか忘れてしまいました...しかし、カスタムのものをいくつか削除しました。これは、これを頻繁に行う場合に役立ちます。それは間違いなく私の時間を節約します。