Cakephp查找查询无法正常工作

时间:2016-03-22 05:57:38

标签: cakephp cakephp-2.0

我正在尝试使用cakephp模型绑定进行查询。获得意想不到的结果。但每当我在phpmyadmin中运行查询时,它运行正常。得到此错误

Column not found: 1054 Unknown column 'Comment.post_id' in 'field list'

无法弄清楚出了什么问题

PostsController

$posts = $this->Post->find('all', array(
        'conditions' => array(
            'Post.is_deleted' => 0,
            'Post.is_active' => 1,
        ),
        'fields' => array(
            'Post.post_id,Post.post_title,Post.post_body,User.username,Post.added_time', 
            'Product.product_title','COUNT(Comment.post_id) AS total_comment'
        ),
        'GROUP'=>'Post.post_id',
        'order' => 'added_time DESC',
    ));

发布模型

public $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreign_key' => 'post_id'
    ),
    'Product' => array(
        'className' => 'Product',
        'foreign_key' => 'post_id'
    )
);

public $hasMany = array(
    'Comment'=>array(
        'className'=>'Comment',
        'foreign_key'=>'post_id'
    )
);

评论模型

public $belongsTo = array(
    'Post'=>array(
        'className'=>'Post',
        'foreign_key'=>'post_id'
    )
);

我的预期查询

SELECT posts.`post_title`, users.username,products.product_title, posts.post_body, COUNT(comments.post_id) as total_comments from posts LEFT JOIN comments on comments.post_id = posts.post_id LEFT join users on users.user_id = posts.user_id LEFT JOIN products on products.product_id = posts.product_id WHERE posts.is_active = 1 and posts.is_deleted = 0 GROUP BY posts.post_id

1 个答案:

答案 0 :(得分:1)

尝试设置递归级别1或2

$this->Post->find('all', array(
        'conditions' => array(
            'Post.is_deleted' => 0,
            'Post.is_active' => 1,
        ),
        'fields' => array(
            'Post.post_id,Post.post_title,Post.post_body,User.username,Post.added_time', 
            'Product.product_title','COUNT(Comment.post_id) AS total_comment'
        ),
        'GROUP'=>'Post.post_id',
        'order' => 'added_time DESC',
'recursive'=>1
    ));