李帅

1.优化一言添加

......@@ -6,6 +6,7 @@ use App\Admin\Renderable\VerseTable;
use App\Admin\Repositories\OnePoem;
use App\Admin\Repositories\Verse;
use App\Models\Author;
use App\Models\OnePoem2;
use App\Models\Poetry;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
......@@ -25,16 +26,34 @@ class OnePoemController extends AdminController
*/
protected function grid()
{
return Grid::make(new OnePoem(), function (Grid $grid) {
// return Grid::make(new OnePoem(), function (Grid $grid) {
// $grid->column('id')->sortable();
// $grid->column('title');
// $grid->column('content');
// $grid->column('annotate');
// $grid->column('spelling');
// $grid->column('en');
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
//
// $grid->filter(function (Grid\Filter $filter) {
// $filter->equal('id');
// });
// });
return Grid::make(new OnePoem2(), function (Grid $grid) {
$grid->model()->with('verses');
$grid->column('id')->sortable();
$grid->column('title');
$grid->column('content');
$grid->column('annotate');
$grid->column('spelling');
$grid->column('en');
$grid->column('author');
// $grid->column('content');
$grid->verses('正文')->pluck('stanza')->label();
// $grid->column('annotate');
// $grid->column('spelling');
// $grid->column('en');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
......@@ -87,21 +106,13 @@ class OnePoemController extends AdminController
$form->text('title');
$form->text('author');
$form->hasMany('components','诗句组', function (Form\NestedForm $form) {
$form->selectTable('font_file','诗句')
$form->hasMany('verses','诗句组', function (Form\NestedForm $form) {
$form->selectTable('verse_id','诗句')
->title('字体选择')
->from(VerseTable::make())
->model(\App\Models\Verse::class,'id','stanza');
});
// $form->textarea('content');
// $form->text('annotate');
// $form->text('spelling');
// $form->text('en');
$form->display('created_at');
$form->display('updated_at');
});
......@@ -109,8 +120,21 @@ class OnePoemController extends AdminController
public function store()
{
return request()->all();
// return $this->form()->store();
// 写 一言表
$post = request()->all();
$poem2 = OnePoem2::query()->create([
'title' => $post['title'],
'author' => $post['author'],
]);
// 写关联表
$verse_ids = [];
foreach ($post['verses'] as $verse){
$verse_ids[] = $verse['verse_id'];
}
$poem2->verses()->sync($verse_ids);
return $this->form()->response()->success('添加成功');
}
protected function PoetryGrid()
......
......@@ -2,6 +2,7 @@
namespace App\Admin\Controllers;
use App\Admin\Renderable\AuthorTable;
use App\Admin\Repositories\Poetry;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
......@@ -19,11 +20,14 @@ class PoetryController extends AdminController
protected function grid()
{
return Grid::make(new Poetry(), function (Grid $grid) {
$grid->model()->with(['author']);
$grid->column('id')->sortable();
$grid->column('author.name','作者');
$grid->column('name');
$grid->column('subname');
$grid->column('alias');
$grid->column('en');
$grid->column('state','状态')->switch();
$grid->column('created_at');
$grid->column('updated_at')->sortable();
......@@ -62,7 +66,12 @@ class PoetryController extends AdminController
protected function form()
{
return Form::make(new Poetry(), function (Form $form) {
$form->display('id');
$form->selectTable('author_id','作者')
->title('字体选择')
->from(AuthorTable::make())
->model(\App\Models\Author::class,'id','name');
$form->text('name');
$form->text('subname');
$form->text('alias');
......
<?php
/**
* Created by PhpStorm.
* User: lishuai
* Date: 2022/1/10
* Time: 5:57 PM
*/
namespace App\Admin\Renderable;
use App\Admin\Repositories\OnePoem;
use App\Models\Author;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
class AuthorTable extends LazyRenderable
{
public function grid(): Grid
{
return Grid::make(new Author(), function (Grid $grid) {
$grid->column('id', 'ID')->sortable();
$grid->column('name');
$grid->column('dynasty');
$grid->column('introduce');
$grid->column('state')->switch();
$grid->quickSearch(['name', 'dynasty', 'introduce']);
$grid->paginate(10);
$grid->disableActions();
$grid->filter(function (Grid\Filter $filter) {
$filter->like('name')->width(3);
$filter->like('dynasty')->width(3);
$filter->like('introduce')->width(3);
});
});
}
}
\ No newline at end of file
......@@ -23,13 +23,13 @@ class VerseTable extends LazyRenderable
$grid->model()->with(['poetry']);
$grid->column('id')->sortable();
$grid->column('author_id')->display(function (){
$id = $this->poetry_id;
$poetry = Poetry::query()->find($id);
$author_id = $poetry->author_id;
$author = Author::query()->find($author_id);
return $author->name;
})->copyable();
// $grid->column('author_id')->display(function (){
// $id = $this->poetry_id;
// $poetry = Poetry::query()->find($id);
// $author_id = $poetry->author_id;
// $author = Author::query()->find($author_id);
// return $author->name;
// })->copyable();
$grid->column('poetry.name')->copyable();
$grid->column('stanza')->copyable();
......
......@@ -11,9 +11,15 @@ class OnePoem2 extends Model
use HasDateTimeFormatter;
protected $table = 'one_poem2';
protected $fillable = ['title','author'];
public function admin_make_video()
{
return $this->belongsTo(AdminMakeVideo::class,'poem_id');
}
public function verses()
{
return $this->belongsToMany(Verse::class, 'verse_poem2', 'poem_id', 'verse_id');
}
}
......
......@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOnePoem2Table extends Migration
class CreateVerseOnePoem2Table extends Migration
{
/**
* Run the migrations.
......