Я не уверен, что представляет $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). Тем не менее, я забываю, почему я использую это ... но я удалил некоторые пользовательские вещи. Это должно быть полезно для вас, если вы делаете это много. Это определенно экономит мое время.