2

如果我尝试使用 Kohana ORM 加载结果,则查询是正确的,但结果为空。如果我复制查询并在 phpmyadmin 中使用它,我会收到 2 行。

这是 Kohana 代码 (ORM)

        // DB work
        $ftps = ORM::factory('ftp');

        // if we activate many (we load only ready)
        if ($this->request->param('mode') == 'activate') {
            $ftps->where('ready', '=', '1');

        // if we activate many (we load only ready)
        } elseif ($this->request->param('mode') == 'not_ready') {
            $ftps->where('ready', '=', '0');
        }

        // DB work
        $ftps->and_where('activated', '=', '0')
             ->order_by('lastcheck', 'ASC')
             ->limit(intval($post['number']))
             ->find_all();

这是 SQL 查询(调试)

SELECT `ftp`.* FROM `ftps` AS `ftp` WHERE `activated` = '0' ORDER BY `lastcheck` ASC LIMIT 100 (1)

为什么 Kohana 不能像 phpmyadmin 那样加载相同的结果?这是同一个查询。我没有找到解决方案。

谢谢您的帮助

4

1 回答 1

0

这是我在使用 Kohana 时经常遇到的问题。您的问题有一个简单但不那么直观的解释。如果你只是在做...

$ftps->find_all();

然后尝试$ftp用作您的结果集,这将不起作用,因为该find_all()函数仅返回结果集,并且$ftps正在重置查询对象。相反,你需要做...

$ftps = $ftps->find_all();

然后 $ftps包含结果集。

希望有帮助!

于 2012-11-18T11:24:22.197 回答