大米CMS官网论坛,大米站长联盟,大米站长之家,大米开发者社区

 找回密码
 注册大米会员

QQ登录

只需一步,快速开始

一键js接入直播
查看: 609|回复: 0
打印 上一主题 下一主题

大米cms7.x实现联合查询得四种方法

[复制链接]

549

主题

827

帖子

8632

积分

超级版主

Rank: 8Rank: 8

积分
8632

授权用户商城金牌VIP

跳转到指定楼层
楼主
发表于 2025-6-16 17:36:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 追影 于 2025-6-16 17:40 编辑

(1)模型实现数据库联合查询链式写法:
  1.         $date = date('Y-m-d');
  2.         //今日菜品
  3.         $list = Dish::alias('d')
  4.             ->join('article a', 'd.aid = a.aid')  // 联表条件
  5.             ->field('d.*, a.title')  // 指定字段,并重命名 title
  6.             ->where('d.dish_date', '=', $date)
  7.             ->where('a.status', 1)
  8.             ->select()
  9.             ->toArray();
  10.         var_dump($list);
复制代码

(2)使用大米cms7.x提供得视图模型
  1. <?php
  2. /***********************************************************
  3. [大米CMS] (C)2011 - 2011 damicms.com

  4. @function 管理员视图模型 Model

  5. @Filename AdminViewModel.class.php $

  6. @Author 追影 QQ:279197963 $

  7. @Date 2011-11-17 15:23:44 $
  8. *************************************************************/
  9. namespace app\base\model;
  10. use app\base\model\ViewModel;

  11. class AdminView extends ViewModel
  12. {
  13.     protected $viewFields = [
  14.         'admin' => ['id,username,lastlogintime,lastloginip,status','_as'=>'admin','_type'=>'LEFT'],
  15.         'role_admin' => ['role_id', '_as'=>'role_admin','_on' => 'admin.id=role_admin.user_id'],
  16.    ];
  17. }
  18. ?>
复制代码
再用 D('admin_view')->select() 调用看结果
(3)使用with
  1. $list = D('article')->with(['feats'])->whereRaw('aid=' . $_GET['aid'])->find();
  2.         $feats = !empty($list)?$list->feats->toArray():[];
复制代码

模型中feats定义为:
  1.     public function feats()
  2.     {
  3.         return $this->hasMany(\app\base\model\Feat::class,'aid','aid');
  4.     }
复制代码

(4)直接执行sql
  1.             $sql = "select role.id as role_id,node.* from dami_role as role,dami_role_admin as user,dami_access as access,dami_node as node where user.user_id=" . session(config('app.USER_AUTH_KEY')) . " and user.role_id=role.id and role.status=1 and role.id=access.role_id and access.node_id = node.id and node.ismenu=1 and menu_pid=37";
  2.             //echo $sql;
  3.             $list = Db::query($sql);
复制代码




个人推荐方法2或方法一 简单明了


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册大米会员

本版积分规则

QQ|小黑屋|大米CMS社区 ( 蜀ICP备11002200号-2

Powered by 大米CMS

© 2010-2020 大米CMS Inc.

快速回复 返回顶部 返回列表