// +---------------------------------------------------------------------- namespace app\model; use think\facade\Config; use phpspirit\dbskeleton\mysql\TableModel; use phpspirit\dbskeleton\mysql\ColumnModel; use phpspirit\dbskeleton\Factory; /** * 表单 */ class Form extends \think\Model { protected $auto = ['update_time']; protected $insert = ['name', 'create_time', 'status' => 1, 'list_grid' => "id:ID\r\ntitle:标题\r\ncreate_time:添加时间|time_format\r\nupdate_time:更新时间|time_format"]; protected $type = [ 'id' => 'integer' ]; public $addField = [ ['name' => 'name', 'title' => '标识', 'type' => 'text', 'help' => ''], ['name' => 'title', 'title' => '标题', 'type' => 'text', 'help' => ''], ['name' => 'logo', 'title' => '显示Logo', 'type' => 'images', 'help' => ''], ['name' => 'cover', 'title' => 'banner图片', 'type' => 'images', 'help' => ''], ['name' => 'content', 'title' => '内容', 'type' => 'editor', 'help' => ''], ]; public $editField = [ ['name' => 'id', 'title' => 'ID', 'type' => 'hidden', 'help' => ''], // ['name' => 'name', 'title' => '标识', 'type' => 'text', 'help' => ''], ['name' => 'title', 'title' => '标题', 'type' => 'text', 'help' => ''], ['name' => 'logo', 'title' => '显示Logo', 'type' => 'images', 'help' => ''], ['name' => 'cover', 'title' => 'banner图片', 'type' => 'images', 'help' => ''], ['name' => 'content', 'title' => '内容', 'type' => 'editor', 'help' => ''], ['name' => 'list_grid', 'title' => '列表定义', 'type' => 'textarea', 'help' => ''], ]; public static function onAfterInsert($model){ $data = $model->getData(); $mysql = Config::get('database.connections.mysql'); $tablemodel = (new TableModel())->setCharset('utf8mb4') //设置编码 ->setEngine('MyISAM') //设置引擎 ->setTablename($mysql['prefix'] . 'form_' . $data['name']) //设置表名 ->setComment($data['title']); //表备注 $id = (new ColumnModel())->setType('int')->setLen(11)->setName('id')->setIsPk(true)->setIncrement(true)->setComment('自增长'); $dbskeleton = Factory::instance('mysql', $mysql['hostname'] . ':' . $mysql['hostport'], $mysql['database'], $mysql['username'], $mysql['password']); $dbskeleton->createTable($tablemodel, [$id]); $dbskeleton->addColumn($tablemodel, (new ColumnModel())->setType('int')->setLen(11)->setName('create_time')->setIsPk(false)->setIncrement(false)->setComment('创建时间')); $dbskeleton->addColumn($tablemodel, (new ColumnModel())->setType('int')->setLen(11)->setName('update_time')->setIsPk(false)->setIncrement(false)->setComment('更新时间')); } // protected static function init() { // self::beforeInsert(function ($event) { // $data = $event->toArray(); // $tablename = 'form_' . strtolower($data['name']); // //实例化一个数据库操作类 // $db = new \com\Datatable(); // //检查表是否存在并创建 // if (!$db->CheckTable($tablename)) { // //创建新表 // return $db->initTable($tablename, $data['title'], 'id')->query(); // } else { // return false; // } // }); // self::afterInsert(function ($event) { // $data = $event->toArray(); // $fields = include (APP_PATH . 'admin/fields.php'); // if (!empty($fields)) { // foreach ($fields as $key => $value) { // if (in_array($key, array('uid', 'status', 'view', 'create_time', 'update_time'))) { // $fields[$key]['form_id'] = $data['id']; // } else { // unset($fields[$key]); // } // } // model('FormAttr')->saveAll($fields); // } // return true; // }); // // self::beforeUpdate(function($event){ // // $data = $event->toArray(); // // if (isset($data['attribute_sort']) && $data['attribute_sort']) { // // $attribute_sort = json_decode($data['attribute_sort'], true); // // if (!empty($attribute_sort)) { // // foreach ($attribute_sort as $key => $value) { // // db('FormAttr')->where('id', 'IN', $value)->setField('group_id', $key); // // foreach ($value as $k => $v) { // // db('FormAttr')->where('id', $v)->setField('sort', $k); // // } // // } // // } // // } // // return true; // // }); // } public function getStatusTextAttr($value, $data) { $status = array( 0 => '禁用', 1 => '启用', ); return $status[$data['status']]; } }