CakePHP语句查询

CakePHP语句查询,php,mysql,cakephp,Php,Mysql,Cakephp,我怀疑我应该如何在CakePHP上编写查询。 我不想使用CakePHP中的querybuilder,而是想使用语句查询。 因此,我的问题是: SELECT `Post`.id, `Post`.title, COUNT(`Like`.id) AS `Posts_Liked` FROM posts AS `Post`, likes AS `Like` WHERE `Post`.id = `Like`.posts_id; 但是,当我将结果发送到查看页面时,在调用$post['post']['Post

我怀疑我应该如何在CakePHP上编写查询。 我不想使用CakePHP中的querybuilder,而是想使用语句查询。 因此,我的问题是:

SELECT `Post`.id, `Post`.title, COUNT(`Like`.id) AS `Posts_Liked`
FROM posts AS `Post`, likes AS `Like`
WHERE `Post`.id = `Like`.posts_id;

但是,当我将结果发送到查看页面时,在调用
$post['post']['Posts\u Liked']]
时,我无法获取计数,因此我应该如何在视图中调用此数据?

聚合结果不会按照

您应该使用或获取如下数据:

$post[0]['Posts_Liked']
您可以使用

debug($post);
查看阵列的结构

使用虚拟字段,您可以实现如下目的:

$this->Post->virtualfields['Posts_liked'] = 0;
$this->Post->query('SELECT `Post`.id, `Post`.title, COUNT(`Like`.id) AS `Posts_liked` FROM posts AS `Post`, likes AS `Like` WHERE `Post`.id = `Like`.posts_id;');
然后按常规获取数据

$post['Post']['Posts_liked']

如果您希望它是永久性的,您应该尝试将聚合结果添加到数据数组中

您应该使用或获取如下数据:

$post[0]['Posts_Liked']
您可以使用

debug($post);
查看阵列的结构

使用虚拟字段,您可以实现如下目的:

$this->Post->virtualfields['Posts_liked'] = 0;
$this->Post->query('SELECT `Post`.id, `Post`.title, COUNT(`Like`.id) AS `Posts_liked` FROM posts AS `Post`, likes AS `Like` WHERE `Post`.id = `Like`.posts_id;');
然后按常规获取数据

$post['Post']['Posts_liked']
如果你想让它永久化,你应该尝试一下尝试做一个
pr($post);模具()在模型调用之后,甚至在它到达视图之前。我认为它可能被
$post[0]['Posts\u Liked']]
引用,因为它是一个聚合函数。您会注意到CakePHP将
SUM()
MAX()
COUNT()
等放入
$result[0]['COUNT']中一种符号。希望这有帮助

CakePHP的
pr()
函数比
print\r
好得多,imho.

试试做
pr($post);模具()在模型调用之后,甚至在它到达视图之前。我认为它可能被
$post[0]['Posts\u Liked']]
引用,因为它是一个聚合函数。您会注意到CakePHP将
SUM()
MAX()
COUNT()
等放入
$result[0]['COUNT']中一种符号。希望这有帮助

CakePHP的
pr()
函数比
print\r
,imho.

使用
debug($result);死亡debug($result)在控制器中编写>并查看它是否符合您的预期;死亡并查看它是否符合您的期望