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创建用户容器的更好解决方案吗?
答案 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