YII2框架动态创建表模型
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框架动态创建表模型的更多相关文章
- python在sqlite动态创建表源码
代码之余,将开发过程中经常用的代码片段备份一下,如下的代码是关于python在sqlite动态创建表的代码,应该能对各位有所用. import sqlite3 as db conn = db.conn ...
- MyBatis动态创建表
转载请注明出处:https://www.cnblogs.com/Joanna-Yan/p/9187538.html 项目中业务需求的不同,有时候我们需要动态操作数据表(如:动态建表.操作表字段等).常 ...
- 菜鸟学SSH(十八)——Hibernate动态模型+JRebel实现动态创建表
项目用的是SSH基础框架,当中有一些信息非常相似,但又不尽同样.假设每个建一个实体的话,那样实体会太多.假设分组抽象,然后继承,又不是特别有规律.鉴于这样的情况.就打算让用户自己配置要加入的字段,然后 ...
- flask的orm框架(SQLAlchemy)-创建表
# 转载请留言联系 ORM 是什么? ORM,Object-Relation Mapping.意思就是对象-关系映射.ORM 主要实现模型对象到关系数据库数据的映射. 优点 : 只需要面向对象编程, ...
- Spring Boot:实现MyBatis动态创建表
综合概述 在有些应用场景中,我们会有需要动态创建和操作表的需求.比如因为单表数据存储量太大而采取分表存储的情况,又或者是按日期生成日志表存储系统日志等等.这个时候就需要我们动态的生成和操作数据库表了. ...
- OrmLite动态创建表,一个实体类创建多张表的的偏招
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/LonelyRoamer/article/details/26299355 在做一个Android的项 ...
- SQL Server 动态创建表结构
需求是,在word里面设计好表结构(主要在word中看起来一目了然,方便维护),然后复制sql 里面,希望动态创建出来 存储表结构的表 CREATE TABLE [dbo].[Sys_CreateTa ...
- 利用powerdesigner创建表模型后导出sql语句方法,以及报错 Generation aborted due to errors detected during the verification of the model.的解决办法
今天用powerdesigner建了表模型,下面先说一下导出sql语句的步骤. 1.选项 2. 然后就报错了,下面说解决办法,很简单. 你没看错,把模型检查的√去掉就行了~~ 导出表名不带双引号的设置 ...
- JS动态创建表单post提交
<script> //@创建表单方法 function post(URL, PARAMS) { var temp = document.createElement("form&q ...
随机推荐
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...
- iOS图片元数据的读写
图片的本身就是各种图像数据的载体,包含着像素.色彩.灰度等各种数据信息,除此之外,还包含着曝光数据.日期.位置.版权等元数据(metadata). 何为图片元数据 元数据包括许多重要的信息,常用的有E ...
- ATF批量导出工具
ATF批量导出工具 08 / 31, 2013 批量导出Atf的工具,使用是adobe atf 编码核心 先说一下关于atf的bug 当atf导出时候启用了mips选项会导致:如果纹理问长方形时上传会 ...
- 重现PHP Core的调用栈
以前, 我曾经介绍过如何通过PHP的Core文件获取信息:如何调试PHP的Core之获取基本信息, 对于调用参数这块, 当时介绍的获取方法比较复杂. 于是今天我为PHP 5.4的.gdbini ...
- javascript中的一些偏门知识
undefined能够被重写 undefined = "now it's defined"; alert( undefined ); 浏览器测试结果: 浏览器 测试结果 结论 ie ...
- java_泛型(构造器)部分实例
package ming; import java.util.ArrayList; import java.util.Collection; import java.util.List; class ...
- 浅谈iOS中的视图优化
引言: 让我们来思考几个问题,你开发过的产品,它还有可以优化的地方吗?能增加它的帧率吗?能减少多余的CPU计算吗?是不是存在多余的GPU渲染?业务这点工作量对于越来越强大的设备面前显得微不足道,但作为 ...
- C# 之 OpenFileDialog的使用
一.打开文件对话框(OpenFileDialog) 1. OpenFileDialog控件有以下基本属性 [1]InitialDirectory:对话框的初始目录 [2]Filter:要在对话框中显示 ...
- 深入浅出js中的this(一)
Q:this是什么? A:this是Javascript语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,在每个 function 中自动根据作用域(scope) 确定, 指向的是此次调用者 ...
- C语言结构体的引入
#include <stdio.h> struct student{ int ID; ]; int age; }; int main(){ //赋值: , }; ,.name=}; , , ...