需要关于变量COUNT查询的帮助



我的模型中有以下函数:我有一个名为item_like的表。在这个表中,我有两列——saturn_1和like_id。当saturn_1等于'id' => $item->id在我的数组中的值时,我想获得like_id的总数。我很新的编码,不能找出什么是错的。

感谢你的帮助。

public static function formatCallbackChallenge($item, $template = 'challenges') {
    static $extensions = null;
    if($extensions === null) {
        $extensions = Extensions_Model_Front::getByMethod('item_list');
    }
    $item_title = (strlen($item->title) > 25) ? substr($item->title, 0, 25) . '...' : $item->title;
    $db = JO_Db::getDefaultAdapter();
    $total_likes = new JO_Db_Expr('(SELECT COUNT(like_id) FROM item_like WHERE item = $item->id LIMIT 1)');

    $data = array(
        'template' => $template,
        'sql_row' => isset($item->sql_row) ? $item->sql_row : null,,
        'id' => $item->id,
        'title' => $item_title,
        'total_likes' => $total_likes,
    );

    if($extensions) {
        $front = JO_Front::getInstance();
        foreach($extensions AS $id => $ext) {
            $data_ext = call_user_func(array($front->formatModuleName($ext . '_model_item'), 'listing'), $data, $item);
            if($data_ext && is_array($data_ext)) {
                $data = array_merge($data, $data_ext);
            }
        }
    }
    return $data;
}

我不知道你正在使用哪个数据库库,我假设查询运行但返回错误的数据…根据你正在寻找的内容,我看到两个错误…

  1. 一个PHP错误,$item->id将不会在单引号PHP中被解析。
  2. LIMIT 1是冗余的,可能会导致问题。

重写方法中的第9行:

$total_likes = new JO_Db_Expr("SELECT COUNT(like_id) FROM item_like WHERE item = {$item->id}");

最新更新