laravel-admin模型表格之表格数据源(union联表数据)

laravel-admin 是一个可以快速帮你构建后台管理的工具,它提供的页面组件和表单元素等功能,能帮助你使用很少的代码就实现功能完善的后台管理功能。
官方开发文档:Laravel admin | 表格数据源

最近遇到一个项目需求,需要将union的数据进行列表化展示在后台;
后台基于Laravel-Admin扩展来实现的,由于model-grid的数据是依赖Eloquent model来查询获取;
也就是说Encore\Admin\Grid被new的时候传入的参数1必须是个Eloquent model实例;
但对于union数据来说并非一张实例Model;

解决方案一

通过建立视图表,建立视图Model进行引用实现表格数据源的接入;

namespace App\Admin\Controllers\Test;
use App\Http\Controllers\Controller;
use Encore\Admin\Grid;
use App\Models\View\UnionViewModels AS mUnionView;

class TestController extends Controller
{
	// .... 
	protected function grid()
    {
		$grid = new Grid(new mUnionView());
	}
	// ....

解决方案二

通过Grid的model()来改变数据源

namespace App\Admin\Controllers\Test;
use App\Http\Controllers\Controller;
use Encore\Admin\Grid;
use Illuminate\Support\Facades\DB;
use App\Models\UnionDataModels AS mUnionData;

class TestController extends Controller
{
	// .... 
	protected function grid()
    {
     	// 这里的Models可能是个空模型
		$grid = new Grid(new mUnionData());
		// 这里来改变源空模型的表(相当于建立了个虚拟表)
		$grid->model()->setTable(DB::raw('('.mUnionData::getUnionsSql().') AS T'));
		// 剩下的操作与官方手册中一致,没有其他变化
	}
	// ....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陀螺蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值