我需要制作一个报表,从彼此不直接相关的不同表中获取信息。我认为在创建指向之前创建的临时表的模型时,我将从不同表中插入信息(只有一些类似的特定字段,例如:概念、总数)。
我想知道是否可以使用背包列表提供的过滤器和工具。我应该在什么时候创建临时表,以便模型能够找到它?
我做了一个快速测试,在语句之前添加了创建临时表的代码:
CRUD::setModel(\App\Models\Bank::class);
在我的设置中,但它没有工作。
我已经饱和了,在花很多时间在这上面之前,我想知道这是否可能?或者如果有人有任何建议。非常感谢。
更新
我在我的模型中创建了一个函数,它删除临时表(如果它存在),创建带有必要字段的临时表并插入记录,
$dropTempTables = DB::unprepared(
DB::raw("
DROP TABLE IF EXISTS bancos ;
")
);
$createTempTables = DB::unprepared(DB::raw("
CREATE TEMPORARY TABLE if not exists bancos (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
nombre VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
id_orden_trabajo BIGINT(20) UNSIGNED NULL DEFAULT NULL,
id_orden_compra BIGINT(20) UNSIGNED NULL DEFAULT NULL,
fecha_pago DATE NULL DEFAULT NULL,
total DECIMAL(8,2) NULL DEFAULT NULL,
PRIMARY KEY (id) USING BTREE
);
"));
if($createTempTables){
DB::insert('insert into bancos (nombre, id_orden_trabajo, id_orden_compra, fecha_pago, total) values (?,?, ?, ?, ?)', ['caja', 10, 20, '2022-01-11', 20]);
DB::insert('insert into bancos (nombre, id_orden_trabajo, id_orden_compra, fecha_pago, total) values (?,?, ?, ?, ?)', ['hola2', 10, 20, '2022-11-11', 20]);
}
我从我的控制器的“设置”中调用这个函数,然后我分配已经分配了该表的模型。
CRUD::setModel(\App\Models\Banco::class);
列表显示正确,过滤器和分页,但搜索字段不能正常工作,所以我添加'searchLogic'到文本列,它工作。
protected function setupListOperation()
{
$this->crud->addColumn([
'name' => 'nombre',
'label' => 'Nombre',
'searchLogic' => function ($query, $column, $searchTerm) {
$query->orWhere('nombre', 'like', '%'.$searchTerm.'%');
}
]);
我只是在每一列的标题中缺少了排序的箭头,那些noa出现了。我做错了什么,或者我缺少了一些带来这些细节的东西,或者可能在未来的更新中导致问题?
1条答案
按热度按时间gk7wooem1#
流程如下:
->setModel
创建CrudPanel。/search
端点执行 AJAX 请求,同样,将使用您定义的模型创建CrudPanel。可能需要使用Model Boot 功能来更改Model中运行时的表?
不确定它会不会起作用,但它本身不是一个“背包问题”。
希望能有所帮助。
干杯