Modelfield.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\controller\Base;
  4. use think\Request;
  5. use think\Db;
  6. use think\facade\Env;
  7. use think\Config;
  8. // 模型字段处理
  9. class Modelfield extends Base
  10. {
  11. public static function connect()
  12. {
  13. return Db::connect();
  14. }
  15. public function index(Request $request){
  16. $modid = $request->param('moid');
  17. $list = Db::name('modfiel')->where('modid',$request->param('moid'))->paginate(25);
  18. return view('index',['list'=>$list,'modid'=>$modid]);
  19. }
  20. public function edit(Request $request){
  21. $db = self::connect();
  22. if($request->isAjax()){
  23. $data = $request->param();
  24. $getdata = Db::name('modfiel')->where(['modid'=>$data['modid'],'id'=>$data['id']])->field('field,type,leng')->find();
  25. $getfield = Db::name('modfiel')->where(['field'=>$data['field']])->find();
  26. if($data['field'] != $getdata['field']){
  27. if($getfield != NULL){
  28. return jsonmsg(0,"字段标识已存在");
  29. false;
  30. }
  31. }
  32. $fieldif = ["varchar","char"];
  33. if(in_array($data['type'],$fieldif)){
  34. if(empty($data['leng'])){
  35. return jsonmsg(0,"此字段类型请指定长度");
  36. false;
  37. }
  38. }
  39. $tab = Db::name('model')->where('id',$data['modid'])->field('tablename')->find();
  40. $res = Db::name('modfiel')->update($data);
  41. if($res){
  42. if($data['field'] !== $getdata['field']){
  43. $db->query("ALTER TABLE ".config("database.prefix").$tab['tablename']." CHANGE ".$getdata['field']." ".$data['field']." ".$data['type']."(".$data['leng'].")");
  44. }
  45. if($data['type'] !== $getdata['type'] || $data['leng'] !== $getdata['leng']){
  46. if(!empty($data['leng'])){
  47. $db->query("ALTER TABLE ".config("database.prefix").$tab['tablename']." MODIFY COLUMN ".$data['field']." ".$data['type']."(".$data['leng'].")");
  48. }else{
  49. $db->query("ALTER TABLE ".config("database.prefix").$tab['tablename']." MODIFY COLUMN ".$data['field']." ".$data['type']);
  50. }
  51. }
  52. return jsonmsg(1,'修改成功');
  53. }else{
  54. return jsonmsg(1,'修改失败');
  55. }
  56. }
  57. $list = Db::name("modfiel")->where("id",$request->param('fieid'))->find();
  58. $sqlfied = config('modelfield.sql');
  59. $formfied = config('modelfield.form');
  60. return view('edit',['list'=>$list,'sqlfied'=>$sqlfied,'formfied'=>$formfied]);
  61. }
  62. public function add(Request $request){
  63. $db = self::connect();
  64. if($request->isAjax()){
  65. $data = $request->param();
  66. $field = Db::name("modfiel")->where(["modid"=>$data['modid'],"field"=>$data['field']])->find();
  67. if($field != NULL){
  68. return jsonmsg(0,'字段标识已存在');
  69. false;
  70. }
  71. $fieldif = ["varchar","char"];
  72. if(in_array($data['type'],$fieldif)){
  73. if(empty($data['leng'])){
  74. return jsonmsg(0,"此字段类型请指定长度");
  75. false;
  76. }
  77. }
  78. $tab = Db::name('model')->where('id',$data['modid'])->field('tablename')->find();
  79. if($data['chart'] == 2){
  80. $tab['tablename'] = $tab['tablename']."_data";
  81. }
  82. $res = Db::name('modfiel')->insert($data);
  83. if($res){
  84. if(!empty($data['leng'])){
  85. $db->query("ALTER TABLE ".config("database.prefix").$tab['tablename']." ADD COLUMN ".$data['field']." ".$data['type']."(".$data['leng'].") DEFAULT NULL");
  86. }else{
  87. $db->query("ALTER TABLE ".config("database.prefix").$tab['tablename']." ADD COLUMN ".$data['field']." ".$data['type']." DEFAULT NULL");
  88. }
  89. return jsonmsg(0,'添加成功');
  90. }else{
  91. return jsonmsg(0,'添加失败');
  92. }
  93. }
  94. $modid = $request->param("modid");
  95. $sqlfied = config('modelfield.sql');
  96. $formfied = config('modelfield.form');
  97. return view('add',['modid'=>$modid,'sqlfied'=>$sqlfied,'formfied'=>$formfied]);
  98. }
  99. public function fiedel(Request $request){
  100. $db = self::connect();
  101. if($request->isPost()){
  102. $data = $request->param();
  103. $getfi = Db::name('modfiel')->where("id",$data['delid'])->field("field,chart,ismuyu")->find();
  104. if($getfi['ismuyu'] == 1){
  105. return jsonmsg(500,'系统字段禁止删除');
  106. false;
  107. }
  108. $tab = Db::name('model')->where('id',$data['modid'])->field('tablename')->find();
  109. if($getfi['chart'] == 2){
  110. $tab['tablename'] = $tab['tablename']."_data";
  111. }
  112. $res = Db::name('modfiel')->delete($data['delid']);
  113. if($res){
  114. $db->query("ALTER TABLE ".config("database.prefix").$tab['tablename']." DROP COLUMN ".$getfi['field']."");
  115. return jsonmsg(1,'删除成功');
  116. }else{
  117. return jsonmsg(0,'删除失败');
  118. }
  119. }
  120. return jsonmsg(500,'非法操作');
  121. }
  122. }