在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自己的众多专有方法将各种查询粘合在一起。
答案 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中非常清楚地记录了这一点。