Kohana - 在ORM :: Save之前向查询添加值

时间:2014-04-16 19:21:01

标签: php kohana

我正在使用ORM将用户注册数据保存到数据库中。代码如下。

if ($_POST) {
    $user = Model::factory('member');
    $post = $user->validate_create($_POST); 
    if ($post->check()) {
        $user->values($post);
        $user->save();
        // redirect to create gallery.
    }
}

我有一些值,例如UserType,它不是$_POST的一部分,但必须作为用户注册的一部分保存在members表中。改变$post的值并向其添加UserType是否是一个好主意,还是有其他推荐的方法来实现这一目标?

2 个答案:

答案 0 :(得分:0)

可以更改$post,因为它只是一个数组,其中的值现在来自请求。

您可以通过编辑$post数组:

来实现
$post['usertype'] = 'customer';
$user->values($post);
$user->save();

或者您可以直接将值设置为ORM对象:

$user->values($post);
$user->usertype = 'customer';
$user->save();

两者都应该没问题

答案 1 :(得分:0)

您可以在表单中使用隐藏的输入。例如:

Form::hidden('usertype', 'customer');

如果您不想更改$ _POST数组。 如果要检查用户是否发送$ _POST请求,请使用Kohana的方法:

if($this->request->method() === Request::POST) {}

而不是:

if($_POST)

顺便说一句,以这种方式获取$ _POST数据:

$post = $this->request->post();