在Laravel Query Builder中使用括号

 心理学点滴_312 发布于 2023-01-30 16:31

我正在将我的应用程序迁移到Laravel 4,但我陷入了一个非常重要的查询,Raw查询是这样的:

'select m.* from vn_mensagem m'
            . ' INNER JOIN vn_mensagem_item i ON i.mensagem_id = m.mensagem_id '
            . 'INNER JOIN vn_mensagem_destino d ON d.mensagem_id = m.mensagem_id '
            . 'WHERE d.usuario_id = ' . $user->id . ' AND m.lida = 0 '
            . 'AND i.data > "' . $timestamp . '" '
            . 'group by d.mensagem_id '
            . 'HAVING (count(i.mensagem_item_id) > 1 OR m.usuario_id != ' . $user->id . ')'
            . 'ORDER BY i.data DESC'

我尝试使用Laravel Query Builder重现该查询,我得到了这个:

$mensagens = DB::table('mensagem')
                    ->select('mensagem.*')
                    ->join('mensagem_item', 'mensagem.mensagem_id', '=', 'mensagem_item.mensagem_id')
                    ->join('mensagem_destino', 'mensagem.mensagem_id', '=', 'mensagem_destino.mensagem_id')
                    ->where('mensagem_destino.usuario_id', $user->id)
                    ->where('lida', 0)
                    ->where('mensagem_item.data', '>', $timestamp)
                    ->groupBy('mensagem_destino.mensagem_id')
                    ->having(function($query) {
                        $query->where(DB::raw('count(mensagem_item.mensagem_item_id)'), '>', 1)
                        ->orWhere('mensagem.usuario_id', '!=', $user->id);
                    })                        
                    ->orderBy('mensagem_item.data', 'desc')->get();

但后来我收到以下错误:

{"error":{"type":"ErrorException","message":"strtolower() expects parameter 1 to be string, object given","file":"\/var\/www\/laravel\/php\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Grammar.php","line":49}}

如何在Laravel Query Builder中的parenteses之间制作HAVING条件?

1 个回答
  • having() 不接受回调,你可以使用 havingRaw()

    2023-01-30 16:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有