TenantController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Models\Tenant;
  4. use Encore\Admin\Controllers\AdminController;
  5. use Encore\Admin\Form;
  6. use Encore\Admin\Grid;
  7. use Encore\Admin\Show;
  8. class TenantController extends AdminController
  9. {
  10. protected $title = '租户';
  11. protected $description = '';
  12. /**
  13. * Make a grid builder.
  14. *
  15. * @return Grid
  16. */
  17. protected function grid()
  18. {
  19. $grid = new Grid(new Tenant(['domains']));
  20. $grid->model()->orderByDesc('created_at');
  21. $grid->column('id')->copyable();
  22. $grid->column('name');
  23. $grid->column('tenancy_db_connection', 'tenancy_db_connection');
  24. $grid->column('domains')->display(function ($domains) {
  25. if (count($domains) == 0) {
  26. return '-';
  27. }
  28. $domainString = '';
  29. foreach ($domains as &$domain) {
  30. $domainString .= $domain['domain'].'<br/>';
  31. }
  32. return $domainString;
  33. });
  34. $grid->column('expired_at')->datetime();
  35. $grid->column('created_at')->datetime();
  36. $grid->column('updated_at')->datetime();
  37. $grid->actions(function (Grid\Displayers\Actions $actions) {
  38. $actions->disableDelete();
  39. });
  40. $grid->filter(function (Grid\Filter $filter) {
  41. $filter->like('name');
  42. });
  43. return $grid;
  44. }
  45. /**
  46. * Make a show builder.
  47. *
  48. * @param mixed $id
  49. *
  50. * @return Show
  51. */
  52. protected function detail($id)
  53. {
  54. $show = new Show(Tenant::query()->findOrFail($id));
  55. $show->field('id');
  56. $show->field('name');
  57. $show->field('tenancy_db_connection');
  58. $show->field('expired_at');
  59. $show->field('created_at');
  60. $show->field('updated_at');
  61. $show->domains('domains', function ($domain) {
  62. $domain->id();
  63. $domain->domain();
  64. $domain->created_at();
  65. $domain->updated_at();
  66. });
  67. $show->users('users', function ($user) {
  68. $user->id();
  69. $user->username();
  70. $user->created_at();
  71. $user->updated_at();
  72. });
  73. return $show;
  74. }
  75. /**
  76. * Make a form builder.
  77. *
  78. * @return Form
  79. */
  80. protected function form()
  81. {
  82. $databaseConfig = config('database.connections');
  83. $databaseConnections = [];
  84. foreach ($databaseConfig as $key => $item) {
  85. $databaseConnections[$key] = $key;
  86. }
  87. $form = new Form(new Tenant(['domains']));
  88. $form->tab('基本信息', function (Form $form) use ($databaseConnections) {
  89. $form->text('id')->rules('required');
  90. $form->text('name');
  91. $form->radio('tenancy_db_connection')
  92. ->options($databaseConnections)->default('mysql');;
  93. $form->datetime('expired_at');
  94. })->tab('域名', function (Form $form) {
  95. $form->hasMany('domains', 'domains', function (Form\NestedForm $form) {
  96. $form->text('domain');
  97. });
  98. });
  99. return $form;
  100. }
  101. }