Showing
9 changed files
with
96 additions
and
62 deletions
... | @@ -2,8 +2,6 @@ | ... | @@ -2,8 +2,6 @@ |
2 | 2 | ||
3 | namespace App\Admin\Controllers; | 3 | namespace App\Admin\Controllers; |
4 | 4 | ||
5 | -use App\Admin\Renderable\VerseTable; | ||
6 | -use App\Admin\Repositories\OnePoem; | ||
7 | use App\Admin\Repositories\Verse; | 5 | use App\Admin\Repositories\Verse; |
8 | use App\Models\Author; | 6 | use App\Models\Author; |
9 | use App\Models\OnePoem2; | 7 | use App\Models\OnePoem2; |
... | @@ -13,7 +11,8 @@ use Dcat\Admin\Grid; | ... | @@ -13,7 +11,8 @@ use Dcat\Admin\Grid; |
13 | use Dcat\Admin\Layout\Content; | 11 | use Dcat\Admin\Layout\Content; |
14 | use Dcat\Admin\Show; | 12 | use Dcat\Admin\Show; |
15 | use Dcat\Admin\Http\Controllers\AdminController; | 13 | use Dcat\Admin\Http\Controllers\AdminController; |
16 | -use Illuminate\Http\Request; | 14 | +use Dcat\Admin\Widgets\Card; |
15 | +use Dcat\Admin\Widgets\Table; | ||
17 | 16 | ||
18 | class OnePoemController extends AdminController | 17 | class OnePoemController extends AdminController |
19 | { | 18 | { |
... | @@ -46,11 +45,12 @@ class OnePoemController extends AdminController | ... | @@ -46,11 +45,12 @@ class OnePoemController extends AdminController |
46 | $grid->column('id')->sortable(); | 45 | $grid->column('id')->sortable(); |
47 | $grid->column('title'); | 46 | $grid->column('title'); |
48 | $grid->column('author'); | 47 | $grid->column('author'); |
49 | -// $grid->column('content'); | 48 | + $grid->column('','诗句组') |
50 | - $grid->verses('正文')->pluck('stanza')->label(); | 49 | + ->display('展开') |
51 | -// $grid->column('annotate'); | 50 | + ->expand(function (){ |
52 | -// $grid->column('spelling'); | 51 | + $th = ['id','一言Id','正文','注释','拼音','英文','创建时间','修改时间']; |
53 | -// $grid->column('en'); | 52 | + return Table::make($th, $this->verses->toArray())->withBorder(); |
53 | + }); | ||
54 | $grid->column('created_at'); | 54 | $grid->column('created_at'); |
55 | $grid->column('updated_at')->sortable(); | 55 | $grid->column('updated_at')->sortable(); |
56 | 56 | ||
... | @@ -69,7 +69,7 @@ class OnePoemController extends AdminController | ... | @@ -69,7 +69,7 @@ class OnePoemController extends AdminController |
69 | */ | 69 | */ |
70 | protected function detail($id) | 70 | protected function detail($id) |
71 | { | 71 | { |
72 | - return Show::make($id, new OnePoem(), function (Show $show) { | 72 | + return Show::make($id, new OnePoem2(), function (Show $show) { |
73 | $show->field('id'); | 73 | $show->field('id'); |
74 | $show->field('title'); | 74 | $show->field('title'); |
75 | $show->field('content'); | 75 | $show->field('content'); |
... | @@ -90,7 +90,7 @@ class OnePoemController extends AdminController | ... | @@ -90,7 +90,7 @@ class OnePoemController extends AdminController |
90 | ->title($this->title()) | 90 | ->title($this->title()) |
91 | ->description('注意:基础库中内容只做参考,创建的一言与其他表数据不耦合!理论上可自行组装句子,也可按诗词原文复制。') | 91 | ->description('注意:基础库中内容只做参考,创建的一言与其他表数据不耦合!理论上可自行组装句子,也可按诗词原文复制。') |
92 | // ->description($this->description()['create'] ?? trans('admin.create')) | 92 | // ->description($this->description()['create'] ?? trans('admin.create')) |
93 | -// ->body(Card::make($this->PoetryGrid())) | 93 | + ->body(Card::make($this->PoetryGrid())) |
94 | ->body($this->form()); | 94 | ->body($this->form()); |
95 | } | 95 | } |
96 | 96 | ||
... | @@ -101,41 +101,24 @@ class OnePoemController extends AdminController | ... | @@ -101,41 +101,24 @@ class OnePoemController extends AdminController |
101 | */ | 101 | */ |
102 | protected function form() | 102 | protected function form() |
103 | { | 103 | { |
104 | - return Form::make(new OnePoem(), function (Form $form) { | 104 | + $builder = OnePoem2::with(['verses']); |
105 | + return Form::make($builder, function (Form $form) { | ||
105 | $form->display('id'); | 106 | $form->display('id'); |
106 | $form->text('title'); | 107 | $form->text('title'); |
107 | $form->text('author'); | 108 | $form->text('author'); |
108 | 109 | ||
109 | $form->hasMany('verses','诗句组', function (Form\NestedForm $form) { | 110 | $form->hasMany('verses','诗句组', function (Form\NestedForm $form) { |
110 | - $form->selectTable('verse_id','诗句') | 111 | + $form->textarea('content'); |
111 | - ->title('字体选择') | 112 | + $form->textarea('annotate'); |
112 | - ->from(VerseTable::make()) | 113 | + $form->textarea('spelling'); |
113 | - ->model(\App\Models\Verse::class,'id','stanza'); | 114 | + $form->textarea('en'); |
114 | - }); | 115 | + })->useTable(); |
115 | 116 | ||
116 | $form->display('created_at'); | 117 | $form->display('created_at'); |
117 | $form->display('updated_at'); | 118 | $form->display('updated_at'); |
118 | }); | 119 | }); |
119 | } | 120 | } |
120 | 121 | ||
121 | - public function store() | ||
122 | - { | ||
123 | - // 写 一言表 | ||
124 | - $post = request()->all(); | ||
125 | - $poem2 = OnePoem2::query()->create([ | ||
126 | - 'title' => $post['title'], | ||
127 | - 'author' => $post['author'], | ||
128 | - ]); | ||
129 | - | ||
130 | - // 写关联表 | ||
131 | - $verse_ids = []; | ||
132 | - foreach ($post['verses'] as $verse){ | ||
133 | - $verse_ids[] = $verse['verse_id']; | ||
134 | - } | ||
135 | - $poem2->verses()->sync($verse_ids); | ||
136 | - | ||
137 | - return $this->form()->response()->success('添加成功')->redirect('/poem'); | ||
138 | - } | ||
139 | 122 | ||
140 | protected function PoetryGrid() | 123 | protected function PoetryGrid() |
141 | { | 124 | { |
... | @@ -143,7 +126,7 @@ class OnePoemController extends AdminController | ... | @@ -143,7 +126,7 @@ class OnePoemController extends AdminController |
143 | $grid->model()->with(['poetry']); | 126 | $grid->model()->with(['poetry']); |
144 | 127 | ||
145 | $grid->column('id')->sortable(); | 128 | $grid->column('id')->sortable(); |
146 | - $grid->column('author_id')->display(function (){ | 129 | + $grid->column('author_id','作者')->display(function (){ |
147 | $id = $this->poetry_id; | 130 | $id = $this->poetry_id; |
148 | $poetry = Poetry::query()->find($id); | 131 | $poetry = Poetry::query()->find($id); |
149 | $author_id = $poetry->author_id; | 132 | $author_id = $poetry->author_id; |
... | @@ -156,12 +139,9 @@ class OnePoemController extends AdminController | ... | @@ -156,12 +139,9 @@ class OnePoemController extends AdminController |
156 | $grid->column('annotate')->copyable(); | 139 | $grid->column('annotate')->copyable(); |
157 | $grid->column('spelling')->copyable(); | 140 | $grid->column('spelling')->copyable(); |
158 | $grid->column('en')->copyable(); | 141 | $grid->column('en')->copyable(); |
159 | -// $grid->column('created_at'); | ||
160 | -// $grid->column('updated_at')->sortable(); | ||
161 | - | ||
162 | 142 | ||
163 | $grid->withBorder(); | 143 | $grid->withBorder(); |
164 | - $grid->quickSearch(['stanza'])->placeholder('快捷搜索诗句(节)'); | 144 | + $grid->quickSearch(['stanza'])->placeholder('快捷搜索诗节(支持模糊查询)'); |
165 | 145 | ||
166 | $grid->paginate(5); | 146 | $grid->paginate(5); |
167 | $grid->simplePaginate(); | 147 | $grid->simplePaginate(); |
... | @@ -169,17 +149,16 @@ class OnePoemController extends AdminController | ... | @@ -169,17 +149,16 @@ class OnePoemController extends AdminController |
169 | $grid->disableActions(); | 149 | $grid->disableActions(); |
170 | $grid->disableCreateButton(); | 150 | $grid->disableCreateButton(); |
171 | 151 | ||
172 | - | ||
173 | $grid->filter(function (Grid\Filter $filter) { | 152 | $grid->filter(function (Grid\Filter $filter) { |
174 | $filter->where('author_id',function ($query){ | 153 | $filter->where('author_id',function ($query){ |
175 | $author = Author::query()->where('name','like',"%{$this->input}%")->get()->pluck('id'); | 154 | $author = Author::query()->where('name','like',"%{$this->input}%")->get()->pluck('id'); |
176 | $poetry =Poetry::query()->whereIn('author_id',$author)->get()->pluck('id'); | 155 | $poetry =Poetry::query()->whereIn('author_id',$author)->get()->pluck('id'); |
177 | $query->whereIn('poetry_id',$poetry); | 156 | $query->whereIn('poetry_id',$poetry); |
178 | - })->width(3); | 157 | + },'作者')->width(3); |
179 | $filter->like('poetry.name')->width(3); | 158 | $filter->like('poetry.name')->width(3); |
180 | $filter->like('stanza')->width(4); | 159 | $filter->like('stanza')->width(4); |
181 | $filter->panel(); | 160 | $filter->panel(); |
182 | - | 161 | + $filter->expand(); |
183 | }); | 162 | }); |
184 | }); | 163 | }); |
185 | } | 164 | } | ... | ... |
... | @@ -72,23 +72,17 @@ class PackPoemController extends AdminController | ... | @@ -72,23 +72,17 @@ class PackPoemController extends AdminController |
72 | */ | 72 | */ |
73 | protected function form() | 73 | protected function form() |
74 | { | 74 | { |
75 | - return Form::make(new PackPoem(['poem']), function (Form $form) { | 75 | + return Form::make(PackPoem::with(['poem']), function (Form $form) { |
76 | $form->display('id'); | 76 | $form->display('id'); |
77 | $form->text('title'); | 77 | $form->text('title'); |
78 | $form->text('subtitle'); | 78 | $form->text('subtitle'); |
79 | $form->text('left_text'); | 79 | $form->text('left_text'); |
80 | $form->text('right_text'); | 80 | $form->text('right_text'); |
81 | 81 | ||
82 | - if ($form->isEditing()) { | 82 | + $form->selectTable('poem.poem_id','一言') |
83 | - $form->display('poem.title'); | 83 | + ->title('一言诗词库') |
84 | - $form->display('poem.author'); | 84 | + ->from(PoemTable::make()) |
85 | - $form->display('poem.content'); | 85 | + ->model(OnePoem::class, 'id', 'title'); |
86 | - }else{ | ||
87 | - $form->selectTable('poem_id') | ||
88 | - ->title('一言诗词库') | ||
89 | - ->from(PoemTable::make()) | ||
90 | - ->model(OnePoem::class, 'id', 'title'); | ||
91 | - } | ||
92 | 86 | ||
93 | $form->display('created_at'); | 87 | $form->display('created_at'); |
94 | $form->display('updated_at'); | 88 | $form->display('updated_at'); | ... | ... |
... | @@ -70,7 +70,7 @@ class DevFFmpeg extends Command | ... | @@ -70,7 +70,7 @@ class DevFFmpeg extends Command |
70 | // $arr = json_decode($json,true); | 70 | // $arr = json_decode($json,true); |
71 | // dd($arr); | 71 | // dd($arr); |
72 | // dd(AdminMakeVideo::query()->find(1)->poem2()); | 72 | // dd(AdminMakeVideo::query()->find(1)->poem2()); |
73 | -// dd(AdminMakeVideo::query()->find(1)->poem2->verses->toArray()); | 73 | + dd(AdminMakeVideo::query()->find(33)->poem2->verses->toArray()); |
74 | // return 0; | 74 | // return 0; |
75 | // dd(AdminMakeVideo::query()->find(33)->temp->components->toArray()); | 75 | // dd(AdminMakeVideo::query()->find(33)->temp->components->toArray()); |
76 | dd(AdminMakeVideo::query()->find(33)->temp->toArray()); | 76 | dd(AdminMakeVideo::query()->find(33)->temp->toArray()); | ... | ... |
... | @@ -219,12 +219,12 @@ class AdminMakeImmerse implements ShouldQueue | ... | @@ -219,12 +219,12 @@ class AdminMakeImmerse implements ShouldQueue |
219 | switch ($component->name){ | 219 | switch ($component->name){ |
220 | case 'one_poem': | 220 | case 'one_poem': |
221 | foreach ($this->adminMakeVideo->poem2->verses as $item) { | 221 | foreach ($this->adminMakeVideo->poem2->verses as $item) { |
222 | - if ($item->stanza != '') $contents[] = $item->stanza; | 222 | + if ($item->content != '') $contents[] = $item->content; |
223 | } | 223 | } |
224 | break; | 224 | break; |
225 | case 'one_poem_with_annotate': | 225 | case 'one_poem_with_annotate': |
226 | foreach ($this->adminMakeVideo->poem2->verses as $item) { | 226 | foreach ($this->adminMakeVideo->poem2->verses as $item) { |
227 | - if ($item->stanza != '') $contents[] = $item->stanza; | 227 | + if ($item->content != '') $contents[] = $item->content; |
228 | if ($item->annotate != '') $contents[] = $item->annotate; | 228 | if ($item->annotate != '') $contents[] = $item->annotate; |
229 | } | 229 | } |
230 | break; | 230 | break; |
... | @@ -269,7 +269,7 @@ class AdminMakeImmerse implements ShouldQueue | ... | @@ -269,7 +269,7 @@ class AdminMakeImmerse implements ShouldQueue |
269 | case 'one_poem': | 269 | case 'one_poem': |
270 | $stanzas = ''; | 270 | $stanzas = ''; |
271 | foreach ($this->adminMakeVideo->poem2->verses as $item) { | 271 | foreach ($this->adminMakeVideo->poem2->verses as $item) { |
272 | - if ($item->stanza != '') $stanzas = $item->stanza . "\n"; | 272 | + if ($item->content != '') $stanzas .= $item->content . "\n"; |
273 | } | 273 | } |
274 | $contents[] = $stanzas; | 274 | $contents[] = $stanzas; |
275 | break; | 275 | break; | ... | ... |
... | @@ -506,12 +506,12 @@ class UserMakeImmerse implements ShouldQueue | ... | @@ -506,12 +506,12 @@ class UserMakeImmerse implements ShouldQueue |
506 | switch ($component->name){ | 506 | switch ($component->name){ |
507 | case 'one_poem': | 507 | case 'one_poem': |
508 | foreach ($this->immerse->poem2->verses as $item) { | 508 | foreach ($this->immerse->poem2->verses as $item) { |
509 | - if ($item->stanza != '') $contents[] = $item->stanza; | 509 | + if ($item->content != '') $contents[] = $item->content; |
510 | } | 510 | } |
511 | break; | 511 | break; |
512 | case 'one_poem_with_annotate': | 512 | case 'one_poem_with_annotate': |
513 | foreach ($this->immerse->poem2->verses as $item) { | 513 | foreach ($this->immerse->poem2->verses as $item) { |
514 | - if ($item->stanza != '') $contents[] = $item->stanza; | 514 | + if ($item->content != '') $contents[] = $item->content; |
515 | if ($item->annotate != '') $contents[] = $item->annotate; | 515 | if ($item->annotate != '') $contents[] = $item->annotate; |
516 | } | 516 | } |
517 | break; | 517 | break; |
... | @@ -556,7 +556,7 @@ class UserMakeImmerse implements ShouldQueue | ... | @@ -556,7 +556,7 @@ class UserMakeImmerse implements ShouldQueue |
556 | case 'one_poem': | 556 | case 'one_poem': |
557 | $stanzas = ''; | 557 | $stanzas = ''; |
558 | foreach ($this->immerse->poem2->verses as $item) { | 558 | foreach ($this->immerse->poem2->verses as $item) { |
559 | - if ($item->stanza != '') $stanzas = $item->stanza . "\n"; | 559 | + if ($item->content != '') $stanzas .= $item->content . "\n"; |
560 | } | 560 | } |
561 | $contents[] = $stanzas; | 561 | $contents[] = $stanzas; |
562 | break; | 562 | break; | ... | ... |
... | @@ -20,6 +20,6 @@ class OnePoem2 extends Model | ... | @@ -20,6 +20,6 @@ class OnePoem2 extends Model |
20 | 20 | ||
21 | public function verses() | 21 | public function verses() |
22 | { | 22 | { |
23 | - return $this->belongsToMany(Verse::class, 'verse_poem2', 'poem_id', 'verse_id'); | 23 | + return $this->hasMany(OneSentence::class,'poem_id'); |
24 | } | 24 | } |
25 | } | 25 | } | ... | ... |
app/Models/OneSentence.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +namespace App\Models; | ||
4 | + | ||
5 | +use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
6 | +use Illuminate\Database\Eloquent\Model; | ||
7 | + | ||
8 | +class OneSentence extends Model | ||
9 | +{ | ||
10 | + use HasFactory; | ||
11 | + | ||
12 | + protected $fillable = ['content', 'annotate', 'spelling', 'en']; | ||
13 | + | ||
14 | + public function poem2() | ||
15 | + { | ||
16 | + return $this->belongsTo(OnePoem2::class,'poem_id'); | ||
17 | + } | ||
18 | +} |
... | @@ -11,10 +11,15 @@ class PackPoem extends Model | ... | @@ -11,10 +11,15 @@ class PackPoem extends Model |
11 | use HasDateTimeFormatter; | 11 | use HasDateTimeFormatter; |
12 | protected $table = 'pack_poem'; | 12 | protected $table = 'pack_poem'; |
13 | 13 | ||
14 | - protected $with = ['poem']; | 14 | +// protected $with = ['poem']; |
15 | 15 | ||
16 | public function poem() | 16 | public function poem() |
17 | { | 17 | { |
18 | return $this->belongsTo(OnePoem::class); | 18 | return $this->belongsTo(OnePoem::class); |
19 | } | 19 | } |
20 | + | ||
21 | + public function poem2() | ||
22 | + { | ||
23 | + return $this->belongsTo(OnePoem2::class); | ||
24 | + } | ||
20 | } | 25 | } | ... | ... |
1 | +<?php | ||
2 | + | ||
3 | +use Illuminate\Database\Migrations\Migration; | ||
4 | +use Illuminate\Database\Schema\Blueprint; | ||
5 | +use Illuminate\Support\Facades\Schema; | ||
6 | + | ||
7 | +class CreateOneSentencesTable extends Migration | ||
8 | +{ | ||
9 | + /** | ||
10 | + * Run the migrations. | ||
11 | + * | ||
12 | + * @return void | ||
13 | + */ | ||
14 | + public function up() | ||
15 | + { | ||
16 | + Schema::dropIfExists('verse_poem2'); | ||
17 | + | ||
18 | + Schema::create('one_sentences', function (Blueprint $table) { | ||
19 | + $table->id(); | ||
20 | + $table->unsignedTinyInteger('poem_id'); | ||
21 | + $table->string('content')->default('')->comment('正文'); | ||
22 | + $table->text('annotate')->nullable()->comment('注解'); | ||
23 | + $table->text('spelling')->nullable()->comment('拼音'); | ||
24 | + $table->text('en')->nullable()->comment('英文解释'); | ||
25 | + $table->timestamps(); | ||
26 | + }); | ||
27 | + } | ||
28 | + | ||
29 | + /** | ||
30 | + * Reverse the migrations. | ||
31 | + * | ||
32 | + * @return void | ||
33 | + */ | ||
34 | + public function down() | ||
35 | + { | ||
36 | + Schema::dropIfExists('one_sentences'); | ||
37 | + } | ||
38 | +} |
-
Please register or login to post a comment