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个参数的后面。
例如: