模型查询 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 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

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

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

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

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

1年前 评论

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

1年前 评论
Not404 (楼主) 1年前
Not404 (楼主) 1年前
huchao399 (作者) 1年前
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;
    }
1年前 评论

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