YII2框架动态创建表模型

在YII2中,每个表对应一个model类

在开发过程中,我们在填写一个大型表单的时候,表单里有N个select下拉列表,每个下拉select来自于不同的表;

如果要在程序里用实例化引入这些model类,估计又是N个use引用,而且还需要写查询方法。

所以铁牛在使用过程中,就思考能否创建动态表模型来应用到我们的开发中。

代码见下:

namespace backend\classes;
//创建动态表模型
//在使用调用某些表数据的时候,勿需创建模型既可调用表数据,生成select
//$select= new SelectMade('bus_department',['id','department'],'sort','department','department');
//$department=$select->dropdown();
class SelectMade extends \yii\db\ActiveRecord {
static $table;
private $field;
public $model;
public $order;
public $count;
public $selectId;
public $extends;
public $selectName;
public $itemid;
//$table String 表名称
//$field Array 要查找的字段 egg:['id','department']
//$order String 排序字段
//$selectName String 下拉列表的名称
//$selectId String 下拉列表的ID
//$itemid Int 自增列序号或主键值
//$extends 下拉列表的扩展属性 'egg:<select $extends></select>
public function __construct($table,$field,$order,$selectName,$selectId,$itemid='',$extends='') {
self::$table=$table;
$this->field=$field;
$this->order=$order;
$this->selectId=$selectId;
$this->extends=$extends;
$this->selectName=$selectName;
$this->itemid=$itemid;
parent::__construct();
}
//定义动态表名词,数据来自于初始化类时
public static function tableName(){
return self::$table; }
//数据查询
public function query(){
//获得相应的下拉的数组
$this->model=$this->find()
->select($this->field)
->orderBy($this->order)
->asArray()
->all();
//获得记录的条数,为后续统计服务 ,目前我是预留着,为后续JSON做准备。
$this->count=$this->find()
->select($this->field)
->orderBy($this->order)
->count();
}
//动态生成下拉菜单
//return String
public function dropdown(){
$this->query();
$dropdown='<select id="'.$this->selectId.'" name="'.$this->selectName.'" class="easyui-combobox" '.$this->extends.'>'; foreach (array_values($this->model) as $k=>$v){
$v= array_values($v);
$m=($v[0]==$this->itemid)?' selected="selected"':' ';
$dropdown.=' <option value="'.$v[0].'" '.$m.'>'.$v[1].'</option>';
}
$dropdown.='</select>';
return $dropdown;
}

YII2框架动态创建表模型的更多相关文章

  1. python在sqlite动态创建表源码

    代码之余,将开发过程中经常用的代码片段备份一下,如下的代码是关于python在sqlite动态创建表的代码,应该能对各位有所用. import sqlite3 as db conn = db.conn ...

  2. MyBatis动态创建表

    转载请注明出处:https://www.cnblogs.com/Joanna-Yan/p/9187538.html 项目中业务需求的不同,有时候我们需要动态操作数据表(如:动态建表.操作表字段等).常 ...

  3. 菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表

    项目用的是SSH基础框架,当中有一些信息非常相似,但又不尽同样.假设每个建一个实体的话,那样实体会太多.假设分组抽象,然后继承,又不是特别有规律.鉴于这样的情况.就打算让用户自己配置要加入的字段,然后 ...

  4. flask的orm框架(SQLAlchemy)-创建表

    # 转载请留言联系 ORM 是什么? ORM,Object-Relation Mapping.意思就是对象-关系映射.ORM 主要实现模型对象到关系数据库数据的映射. 优点 : 只需要面向对象编程, ...

  5. Spring Boot:实现MyBatis动态创建表

    综合概述 在有些应用场景中,我们会有需要动态创建和操作表的需求.比如因为单表数据存储量太大而采取分表存储的情况,又或者是按日期生成日志表存储系统日志等等.这个时候就需要我们动态的生成和操作数据库表了. ...

  6. OrmLite动态创建表,一个实体类创建多张表的的偏招

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/LonelyRoamer/article/details/26299355 在做一个Android的项 ...

  7. SQL Server 动态创建表结构

    需求是,在word里面设计好表结构(主要在word中看起来一目了然,方便维护),然后复制sql 里面,希望动态创建出来 存储表结构的表 CREATE TABLE [dbo].[Sys_CreateTa ...

  8. 利用powerdesigner创建表模型后导出sql语句方法,以及报错 Generation aborted due to errors detected during the verification of the model.的解决办法

    今天用powerdesigner建了表模型,下面先说一下导出sql语句的步骤. 1.选项 2. 然后就报错了,下面说解决办法,很简单. 你没看错,把模型检查的√去掉就行了~~ 导出表名不带双引号的设置 ...

  9. JS动态创建表单post提交

    <script> //@创建表单方法 function post(URL, PARAMS) { var temp = document.createElement("form&q ...

随机推荐

  1. HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)

    HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...

  2. Apache中 RewriteRule 规则参数介绍

    Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...

  3. 让ubuntu使用root帐号并让winscp以root身份登录

    ubuntu 服务器默认的root账号是没有激活的,需要用初装的用户账号给root设置管理密码: $ sudo passwd root  //用sudo修改root帐户 Password: //输入密 ...

  4. 关于Arrays类总结

    Arrays是java中的工具类,其中所有的方法都是static.类名就可以直接调用其中的方法. 本文部分引用自: http://www.importnew.com/8952.html Arrays. ...

  5. 使用adb devices命令,老是报error:device offline的错误。

    刚开始报error:devices not found 重新安装adb 驱动. 解决方法: adb kill-server adb start-server adb remount 再使用adb de ...

  6. windows server 2012R2 网络慢的那些事

    前段时间公司新采购了一台ibm的服务器,装的是 windows server 2012R2, 在做完项目迁移后,发现项目访问数据库缓慢,于是逐项查找原因,最后终于找到解决办法 以Administrat ...

  7. hiveserver2 后台运行

    启动hivemetastore  hive --service metastore 启动hiveserver2   hive --service  hiveserver2 beeline !conne ...

  8. vs: 编译: 计算机中丢失mspdb100.dll

    在vs 2010中, 将Microsoft Visual Studio 10.0\VC\bin目录配置在path后(甚至添加lib以及include)后, 报如题错误. 是由于Microsoft Vi ...

  9. C# 编写短信发送Window服务

    我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...

  10. SQL SERVER 与ACCESS、EXCEL的数据导入导出转换

    * 说明:复制表(只复制结构,源表名:a 新表名:b)      select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) ...