记录一下,数据库连接,高级写法

1、 whereIn ,查询结果集写法 。

$data = Db::name('admin_user')->where('status', 1)->whereIn('id', function($query) use($structure_id) {
                    $query->name('admin_structure_duty')->where([
                        'status' => 0,
                        'structure_id' => ['IN', $structure_id]
                    ])->field('user_id')->group('user_id');
                })->field(['id', 'realname'])->select();

2、whereIn ,数组写法。 首先拿到字段,并且转成数组。

对返回的结果集,某个字段是数组类型时,需要遍历出,id 对应的name时,用下面的语句:

  $list = ArticleCategoryModel::get_list(); //返回结果集,但是管理员id 是 暂存的数组转的字符串。
        foreach ($list as $value) {
            $value['managerids'] = stringToArray($value['manager']);  //将字符串  转 数组 。
            $value['managers_name'] = Db::name('admin_user')->whereIn('id', $value['managerids'])->column('realname'); // 用whereIn ,将位于此数组中的所有名字,都检索出来了。指定了column ,取值 ,这个很关键。
            $value['managers_name'] = implode(',', $value['managers_name']); // 数组转字符串,方便前端输出。
        }

3、where ,lick写法 。

$model = $model->where('article.name', 'LIKE', '%' . $where['name'] . '%');

用点,连接%%。

4、就是各种 IN 

if (AuthService::instance()->getDutyUserIDs(0, 11) == false) {
$post['task_admin_uid|task_sign_uid|tour_uid'] = ['IN', AuthService::instance()->uids];
}

就是执行起来,很舒服。代码也少。

SQL 会这样执行:where (task_admin_uid|task_sign_uid|tour_uid)IN (65),就是3种值,都有可能在这个数字里面。

这种集合查询,效率真高。

5、要使用Db::table 这种语法,先引入:use think\Db;

6、用max 函数,搭配 group函数,直接找到某一个分类里面,最大值,最新值,总和等等。真的很爽。

我连了4张表,找最新的日期,就是用的这个。

7、where IN ,写在字段 和 参数之间 。 where OR ,写在2个参数的后面。

例如:

原文地址:https://www.cnblogs.com/xuxiaoman/p/14289513.html