我的目的当然是要学习Laravel-admin啊,
安装完Laravel、admin后,后,看看怎么配置数据库表的CURD
创建数据库表
在wamp的phpmyadmin的blog库中创建表
CREATE TABLE `blog`.`jyxx` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'ID' ,
`jyxh` INT NOT NULL COMMENT '交易序号' ,
`jyrq` TIMESTAMP NOT NULL COMMENT '交易日期' ,
`jyjf` VARCHAR(40) NOT NULL COMMENT '交易甲方' ,
`jyyf` VARCHAR(40) NOT NULL COMMENT '交易乙方' ,
`jyzt` VARCHAR(80) NOT NULL COMMENT '交易主题' ,
`jyje` DECIMAL(10.2) NOT NULL COMMENT '交易金额' ,
`jyxs` VARCHAR(10) NOT NULL COMMENT '交易形式' ,
`jynr` VARCHAR(200) NOT NULL COMMENT '交易内容' ,
`jyjj` TEXT NOT NULL COMMENT '交易简介' ,
PRIMARY KEY (`id`)) ENGINE = InnoDB COMMENT = '交易信息';
注意:数据库的第一列为id,这样在数据的编辑和显示时将使用id列作为索引和参数
如果不用id这列,好要继续学习
在界面上添加访问连接
选择左侧Admin下面的menu(菜单管理)-> 然后在右侧添加信息
标题:交易信息
路径:jyxxes(是数据库名字的复数)
注意:这里应该就是jyxxes,注意这里要加es
创建Model
>php artisan make:model Jyxx
Model created successfully.
将会在blog\app\Models下面创建一个Jyxx.php文件
名字为数据库名,首字母大写,注意:首字母大写
编辑blog\app\Models\Jyxx.php,在后面加上
protected $table = ‘Jyxx’;
public $timestamps = false;
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Jyxx extends Model
{
use HasFactory;
protected $table = 'Jyxx';
public $timestamps = false;
}
注意:updated_at
, created_at
这两个字段是缺省时Laravel-Admin要添加到表的更新等操作中的,
添加了public $timestamps = false;后则会取消这个列的操作。
如果不添加这个,那么就在表的最后加上这两列。
创建Controller
>php artisan admin:make JyxxController --model=App\Models\Jyxx
App\Admin\Controllers\JyxxController created successfully.
Add the following route to app/Admin/routes.php:
$router->resource('jyxxes', JyxxController::class);
控制器名字为Model名字加上Controller,后面的model参数,就是上面刚刚创建的Model
然后编辑这个文件app\Admin\Controllers\JyxxController.php,定制一下列表、新增和详情时的式样
protected function grid()
{
$grid = new Grid(new Jyxx());
$grid->jyxh('交易序号')->sortable();
$grid->jyrq('交易日期')->sortable();
$grid->jyjf('交易甲方');
$grid->jyyf('交易乙方');
$grid->jyzt('交易主题');
return $grid;
}
上面是列表时的式样
protected function detail($id)
{
$show = new Show(Jyxx::findOrFail($id));
$show->jyxh('交易序号');
$show->jyrq('交易日期');
$show->jyjf('交易甲方');
$show->jyyf('交易乙方');
$show->jyzt('交易主题');
$show->jyje('交易金额');
$show->jyxs('交易形式');
$show->jynr('交易内容');
$show->jyjj('交易简介');
return $show;
}
上面是显示时的式样
protected function form()
{
$form = new Form(new Jyxx());
$form->number('jyxh', '交易序号');
$form->datetime('jyrq', '交易日期');
$form->text('jyjf','交易甲方');
$form->text('jyyf','交易乙方');
$form->text('jyzt','交易主题');
$form->decimal('jyje','交易金额');
$form->radio('jyxs', __('交易形式'))
->options(['网签' => __('网签'), '纸质' => __('纸质')]);
$form->text('jynr','交易内容');
$form->textarea('jyjj','交易简介');
return $form;
}
上面是新增时的式样
注意:针对form中字段还有image、color、ip、url等样式,估计得仔细看文档
定制路由
编辑app/Admin/routes.php文件
在后面增加$router->resource(‘jyxxes’, JyxxController::class);这个路由导航
routes.php的内容为
<?php
use Illuminate\Routing\Router;
Admin::routes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
'as' => config('admin.route.prefix') . '.',
], function (Router $router) {
$router->get('/', 'HomeController@index')->name('home');
$router->resource('jyxxes', JyxxController::class);
});
测试
附 完整的app\Admin\Controllers\JyxxController.php
<?php
namespace App\Admin\Controllers;
use App\Models\Jyxx;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Show;
class JyxxController extends AdminController
{
/**
* Title for current resource.
*
* @var string
*/
protected $title = '交易信息库';
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
$grid = new Grid(new Jyxx());
$grid->jyxh('交易序号')->sortable();
$grid->jyrq('交易日期')->sortable();
$grid->jyjf('交易甲方');
$grid->jyyf('交易乙方');
$grid->jyzt('交易主题');
return $grid;
}
/**
* Make a show builder.
*
* @param mixed $id
* @return Show
*/
protected function detail($id)
{
$show = new Show(Jyxx::findOrFail($id));
$show->jyxh('交易序号');
$show->jyrq('交易日期');
$show->jyjf('交易甲方');
$show->jyyf('交易乙方');
$show->jyzt('交易主题');
$show->jyje('交易金额');
$show->jyxs('交易形式');
$show->jynr('交易内容');
$show->jyjj('交易简介');
return $show;
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Jyxx());
$form->number('jyxh', '交易序号');
$form->datetime('jyrq', '交易日期');
$form->text('jyjf','交易甲方');
$form->text('jyyf','交易乙方');
$form->text('jyzt','交易主题');
$form->decimal('jyje','交易金额');
$form->radio('jyxs', __('交易形式'))
->options(['网签' => __('网签'), '纸质' => __('纸质')]);
$form->text('jynr','交易内容');
$form->textarea('jyjj','交易简介');
return $form;
}
}