模型查询 where 条件类型转换的问题

2. 问题描述?

在使用模型where条件时 string 类型在生成sql时,识别为整形,未添加单引号

3. 您期望得到的结果?

select * from lemi_member_order where order_type in (0, 500) and (com_no = ‘345345465’ or lemi_member_order.id = 345345465) order by id desc
//: <> (能截图就截图。)

4. 您实际得到的结果?

模型查询 where 条件类型转换的问题

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

是自己封装的生成sql的方法吗

2年前 评论
Not404 (楼主) 2年前
Not404 (楼主) 2年前
huchao399 (作者) 2年前
讨论数量: 11

strval($order_id) 或者(string)$order_id 试试

2年前 评论
Not404 (楼主) 2年前
fearless222 2年前
不负岁月 2年前
DogLoML

whereRaw(sql)或者where(DB::raw(sql))试试

2年前 评论

是自己封装的生成sql的方法吗

2年前 评论
Not404 (楼主) 2年前
Not404 (楼主) 2年前
huchao399 (作者) 2年前
function raw_sql(string $sql, array $bindings)
    {
        if (!empty($bindings)) {
            $sql = str_replace(['%', '?'], ['%%', '%s'], $sql);
            foreach ($bindings as $key => $binding) {
                if (is_null($binding)) {
                    $bindings[$key] = 'null';
                } elseif (is_string($binding)) {
                    $binding        = addslashes($binding);
                    $bindings[$key] = "'{$binding}'";
                } else {
                    $bindings[$key] = "{$binding}";
                }
            }
            $sql = vsprintf($sql, $bindings);
        }
        return $sql;
    }
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!