CakePHP3:如何在表模型中运行自定义SQL查询

qfe3c7zg  于 2022-11-11  发布在  PHP
关注(0)|答案(2)|浏览(127)

在CakePHP 3中,是否可以在表模型中运行一个自定义的SQL查询?如果可以,如何实现?
我在表模型中尝试了以下操作:

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

(The出于示例目的,查询被刻意简化。)
但是,当我循环通过$rows时,这会导致无限循环。
我很惊讶CakePHP 3没有在他们的文档中清楚地记录从表模型运行自定义查询。他们目前迫使用户使用CakePHP自己的许多专有方法来将各种查询粘合在一起。

r55awzrz

r55awzrz1#

下面是答案:

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

yyyllmsg2#

因此只需使用php

$query = $this->find()
    ->select(['user_id', 'username'])
    ->where('location' => $location);

在Table类中。
这在docs中有非常清楚的记录。

相关问题