我刚刚开始使用Kohana框架而且我正在尝试执行一些查询,但是在文档中花了几个小时并运行一些测试之后,我所拥有的就是:
class Controller_Test extends Controller {
public function action_index()
{
$query = DB::select()->from('test')->where('test', '=', '1');
echo $query
}
}
现在,如果尝试运行它,那么它就是回显我的SQL。
如何从数据库中获取实际数据?我知道我可以做类似的事情:
$row = mysql_fetch_row(mysql_query($query));
echo $row[0];
它会起作用;但我想这完全是愚蠢的,因为我正在使用一个框架,并且必须有内置的方法。
答案 0 :(得分:5)
你应该知道你实际上正在构建Database_Query对象,所以最后必须有一些东西可以执行它,对吗?
$results = DB::select('*')->from('table')->execute();
然后你可以正常循环这些:
foreach ($results as $result) { echo $result->id; }
答案 1 :(得分:2)
在构建查询之后,您需要使用Database_Query
方法将其转换为execute()
对象,以便您可以获取要运行的值。
如果要将查询结果作为数组处理,可以在执行后添加as_array()
方法,如下所示:
$query = DB::select()->from('test')->where('test', '=', '1')
->execute()->as_array();
如果您只处理一行,并且您知道只需要一行,则可以将其更改为current()
:
$query = DB::select()->from('test')->where('test', '=', '1')
->execute()->current();
然后,当您遍历数组时,可以根据需要提取:
foreach ($query as $row)
{
echo $row['title'];
}
答案 2 :(得分:0)
获取行:
$query = DB::select('p.id')
->select_array(array('p.title', array('p.title', 'pocket') ))
->from(array($this->_table_name, 'p'))
->limit(1);
echo $query->execute()->get('id');
显示查询:
echo $query->compile();