什么是将用户ID更改为对象kohana ORM的最佳方法

时间:2013-07-25 09:42:14

标签: kohana kohana-3 kohana-orm

noob的问题: 我需要从DB查询中选择名为user_id的特定ID。我的DB :: select结果是:

$query=DB::select...
$ids=$query->as_object()-execute();
$players=ORM::factory('User'->select()->where('id', 'in', array($this->to_array($ids)));

和方法to_array:

private function to_array($obj)
{
    $arr=array();
    foreach($obj as $o)
    {
        array_push($arr, $o->user_id);
    }
    return $arr;
}

是Kohana 3.3 ORM中用于从指定的ID创建用户容器的更好解决方案吗?

1 个答案:

答案 0 :(得分:0)

由于ORM扩展了Database类,因此无需单独查询:

$users = ORM::factory('User')
    ->where('your_filter', '=', $whatever_value)
    ->find_all();

此外,Database_Result带有自己的'to_array'功能:as_array例如。

// Will generate an array with e.g. array(15 => 'Peter', 27 => 'Meg');
$users->as_array('id', 'name');

// Will generate a 'standard' array with e.g. array(0 => 'Peter', 1 => 'Meg')
$users->as_array(NULL, 'name');

// Will convert the results into an array e.g. array(0 => Model_User, 2 => Model_User)
$users->as_array();

因此,如果出于某种原因,您确实需要使用结果集中的Ids数组:

$users = ORM::factory('User')
    ->where('id', 'IN', $results->as_array('id', 'id'))
    ->find_all();

在构建东西之前学习ORM真的是值得的,仅仅查看用户指南是不够的;看看api browser