1

我刚开始使用 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];

它会起作用;但我想这完全是愚蠢的,因为我使用的是一个框架,并且必须为此提供内置方法。

4

3 回答 3

5

您应该知道您实际上是在构建 Database_Query 对象,所以最后必须有一些东西来执行它,对吧?

$results = DB::select('*')->from('table')->execute();

然后您通常可以遍历这些:

foreach ($results as $result) { echo $result->id; }

于 2011-11-09T23:27:33.100 回答
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'];
}
于 2011-11-10T18:53:31.897 回答
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();
于 2014-01-24T12:10:21.687 回答