Laravel从yajra数据表中替换QueryDataTable.php

问题描述

我需要替换yajra数据表供应商的功能compileQuerySearch(),但是我似乎无法正确完成...

这是原始功能

<?php

namespace Yajra\DataTables;

use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Query\Expression;
use Illuminate\Support\Str;
use Yajra\DataTables\Utilities\Helper;

class QueryDataTable extends DataTableAbstract
{
    // [...]
    protected function compileQuerySearch($query,$column,$keyword,$boolean = 'or')
    {
        $column = $this->addTablePrefix($query,$column);
        $column = $this->castColumn($column);
        $sql    = $column . ' LIKE ?';

        if ($this->config->isCaseInsensitive()) {
            $sql = 'LOWER(' . $column . ') LIKE ?';
        }

        $query->{$boolean . 'WhereRaw'}($sql,[$this->prepareKeyword($keyword)]);
    }
    // [...]
}

我需要替换为:

<?php

namespace App\Http\yajra; // Changed this line

use Illuminate\Support\Str;
use Illuminate\Database\Query\Builder;
use Yajra\DataTables\Utilities\Helper;
use Yajra\DataTables\DataTableAbstract; // Changed this line
use Illuminate\Database\Query\Expression;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;

class QueryDataTable extends DataTableAbstract
{
    //[...]
    protected function compileQuerySearch($query,$boolean = 'or')
    {
        if ($column!="transaction_date" && $column!="settlement_date"){ // Changed this line
            $column = $this->addTablePrefix($query,$column);
            $column = $this->castColumn($column);
            $sql    = $column . ' LIKE ?';

            if ($this->config->isCaseInsensitive()) {
                $sql = 'LOWER(' . $column . ') LIKE ?';
            }

            $query->{$boolean . 'WhereRaw'}($sql,[$this->prepareKeyword($keyword)]);
        } // Changed this line
    }
    //[...]
}

原始文件位于

\ vendor \ yajra \ laravel-datatables-oracle \ src \ QueryDataTable.php

我的文件位于

\ app \ Http \ yajra \ QueryDataTable.php

我尝试将文件从作曲家中排除,然后将其添加到psr-4中

"autoload": {
    "exclude-from-classmap": ["vendor/yajra/laravel-datatables-oracle/src/QueryDataTable.php"],"psr-4": {
        "App\\": "app/","yajra\\": "app/Http/yajra"
    },"classmap": [
        "database/seeds","database/factories"
    ]
},

那我当然跑了composer dump auto-load

但是由于某种原因,它总是加载原始类,而放弃了我的版本。 为了确认这一点,我在类的顶部添加了一个dd(“ Please crash”),以查看它是否加载了我的版本而不是原始版本......不幸的是,它没有崩溃...所以我的类不是加载的。 (第一次我实际上想让某些东西崩溃非常大声笑)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...