QQ扫一扫联系
推荐使用如下的表结构
公共 article ( id, postTime, xxx ) 多语言 article_data ( id, articleId, lang, title, content, xxx )
目前5.x和9.x实现方式不同。可以参考一下。另外推荐放在 hookSaving 中通过代码判断。
https://laravel.com/docs/9.x/validation#rule-unique
Rule::unique('xxx')->where(fn ($query) => $query->where('leftStatus', 1))
https://laravel.com/docs/5.1/validation#rule-unique
unique:xxx,alias,NULL,id,leftStatus,1
可以参考这个
<?php
namespace App\Admin\Controller;
use App\Model\DemoNews;
use App\Model\DemoNewsCategory;
use Illuminate\Routing\Controller;
use ModStart\Admin\Concern\HasAdminDetail;
use ModStart\Admin\Concern\HasAdminForm;
use ModStart\Admin\Concern\HasAdminGrid;
use ModStart\Admin\Layout\AdminPage;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Input\Request;
use ModStart\Grid\Grid;
use ModStart\Grid\GridFilter;
use ModStart\Support\Concern\HasPageTitleInfo;
use ModStart\Widget\Box;
class DemoNewsMultiGridController extends Controller
{
use HasPageTitleInfo;
use HasAdminGrid;
use HasAdminForm;
use HasAdminDetail;
public function index(AdminPage $page)
{
$grid1 = $this->grid1();
$grid2 = $this->grid2();
if (Request::isPost()) {
switch (InputPackage::buildFromInput()->getTrimString('_grid')) {
case 'grid1':
return $grid1->request();
case 'grid2':
return $grid2->request();
}
}
return $page
->pageTitle('新闻管理(多个)')
->append(Box::make($grid1, '新闻分类'))
->append(Box::make($grid2, '新闻管理'));
}
public function grid1()
{
$grid = Grid::make(DemoNewsCategory::class);
$grid->id('id', 'ID');
$grid->text('title', '标题');
$grid->title('新闻分类');
$grid->urlGrid(modstart_admin_url('demo/news_multi_grid', ['_grid' => 'grid1']));
$grid->canAdd(false)->canEdit(false)->canDelete(false);
$grid->gridFilter(function (GridFilter $filter) {
$filter->eq('id', 'ID');
$filter->like('title', '标题');
});
return $grid;
}
public function grid2()
{
$grid = Grid::make(DemoNews::class);
$grid->id('id', 'ID');
$grid->select('categoryId', '分类')->optionModelTree(DemoNewsCategory::class);
$grid->text('title', '标题');
$grid->richHtml('content', '内容');
$grid->title('新闻管理');
$grid->urlGrid(modstart_admin_url('demo/news_multi_grid', ['_grid' => 'grid2']));
$grid->canAdd(false)->canEdit(false)->canDelete(false);
$grid->gridFilter(function (GridFilter $filter) {
$filter->eq('id', 'ID');
$filter->like('title', '标题');
});
return $grid;
}
}
系统默认使用 id 作为主键,如果需要使用自定义主键,可以通过数据模型类的方法来实现。
第一步,定义数据模型类
namespace Module\News\Model;
use Illuminate\Database\Eloquent\Model;
class News extends Model{
protected $table = 'news';
// 这里可以自定义主键
protected $primaryKey = 'nid';
}
第二步,使用数据模型类作为Form、Detail、Grid的操作对象
// 表单 $form = Form::make(News::class); // 详情 $detail = Detail::make(News::class); // 数据表格 $grid = Grid::make(News::class); // 快速CRUD $builder->init(News::class)