CakePHP3:如何在表模型

时间:2016-02-08 22:44:24

标签: php mysql cakephp

在CakePHP 3中,是否可以在表模型中运行自定义SQL查询?如果是这样,怎么样?

我在表模型中尝试了以下内容:

public function getUsersByLocation($location)
{
    $sql = "SELECT `user_id`, `username` FROM `user` WHERE `location` = ?";
    $rows = $this->query($sql, [$location]);
}

(出于示例目的,该查询非常简单。)

但是,当我循环遍历$rows时,会导致无限循环。

我很惊讶CakePHP 3没有清楚地记录文档中任何地方的表模型运行自定义查询。他们目前正在强迫用户使用CakePHP自己的众多专有方法将各种查询粘合在一起。

2 个答案:

答案 0 :(得分:2)

以下是答案:

public function getUsersByLocation($location)
{
    $sql = "SELECT `user_id`, `username` FROM `user` WHERE `location` = ?";
    return $this->connection()->execute($sql, [$location])->fetchAll('assoc');
}

神圣的链式方法蝙蝠侠。我们必须尽快使用更好的框架。请注意,使用CakePHP的公司都不是科技公司。祝你有愉快的一天。

答案 1 :(得分:1)

所以简单地使用

php $query = $this->find() ->select(['user_id', 'username']) ->where('location' => $location); 在你的Table类中。

docs中非常清楚地记录了这一点。