lumen 如何执行 原生sql 语句

发布于 2022-09-05 08:47:49 字数 645 浏览 16 评论 0

在lumen 中对数据库进行查询 由于条件过多判断 采取使用原生sql
如下

 public static function getAllNewsList($userId,$newId,$companyId,$communityId){
        $sql = "SELECT * FROM notices";
        $where = "WHERE addressee= :userId";
        if($newId) $where .= "or id> :newId";
        if($companyId) $where .= "or addressee= :companyId";
        if($communityId) $where .= "or addressee= :communityId";
        $query = $sql.$where;
        $res =NewNotice::select($query, ['userId' => $userId,'companyId' => $companyId,'communityId' => $communityId]);

        dd($res);
    }

但是结果不同于select(..)->get();
该如何处理啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

睫毛溺水了 2022-09-12 08:47:49
    public static function getAllNewsList($userId,$newId,$companyId,$communityId){
        $res = DB::table('notices')
            ->where('addressee',$userId);
        
        if($newId){
            $res->orWhere('id','>',$newId);
        }
        if($companyId){
            $res->orWhere('addressee',$companyId);
        }
        if($communityId){
            $res->orWhere('addressee',$communityId);
        }

        $res = $res->select('*');

        dd($res);

    }
迷途知返 2022-09-12 08:47:49

按你这段代码, 是会报错的. sql各元素之间缺少空格.

使用DB::table($table)->select('*')->where($column)->get(); 这种build方式吧.

或者 DB::connection()->getPdo(), 使用PDO执行.

$q = \DB::query();

if ($xxx) {
    $q->where('xxx', 'xxx');
}

if ($yyy) {
    $q->where('yyy', 'yyy');
}

$q->get(); // 这就是结果.
节枝 2022-09-12 08:47:49

经修改 NewNotice:: 该为BD::

新增

`
public static function getAllNewsList($userId,$newId,$companyId,$communityId){

    $communityArr = explode(",",$communityId);

    $sql = "SELECT * FROM notices";
    $where = " WHERE addressee= :userId";
    $array = array();
    $array['userId'] = $userId;
    if($newId){
        $where .= " AND id > :newId";
        $array['newId']=$newId;
    }

    if($companyId){

        $where .= " OR addressee= :companyId";
        $array['companyId']=$companyId;
    }
    if($communityId){
        for ($i=0;$i<count($communityArr);$i++){
            $where .= " OR addressee= $communityArr[$i]";
        }

    }
    $query = $sql.$where;
    $res = DB::select($query, $array);

    return($res);
}
`
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文