0

我已经设置了 Laravel Yajra 数据表后端包来处理通过 jquery 数据表查看的 ajax 查询调用的工作。一切都很好,直到我改变了雄辩的查询:

static function for_table($farm_ids) 
    {
            return ChemProgramUser::select('chemprogramuser.id', 'chemprogramuser.farms_id as fid', 
            'chemprogramuser.description as head', 'chemprogramuser.hectares as ha', 
            'chemprogramapp.updated_at',
            'farms.name as fname', 'users.name', 'users.id as uid', 'chemprogramuser.type')
                ->leftJoin('farms', 'farms.id', '=', 'chemprogramuser.farms_id')
                ->leftJoin('users', 'users.id', '=', 'chemprogramuser.manager_id')
                ->groupBy('chemprogramuser.id')
                ->orderBy('chemprogramuser.id', 'desc')
                ->where('chemprogramuser.program', '=', 1)
                ->whereIn('chemprogramuser.farms_id', $farm_ids)
                ->get();

static function for_table($farm_ids) 
    {
            return ChemProgramUser::select('chemprogramuser.id', 'chemprogramuser.farms_id as fid', 
            'chemprogramuser.description as head', 'chemprogramuser.hectares as ha', 
            DB::raw('GREATEST(chemprogramuser.updated_at, COALESCE(chemprogramapp.updated_at, \'1000-01-01\')) AS updated_at'), // this raw query caused the error
            'farms.name as fname', 'users.name', 'users.id as uid', 'chemprogramuser.type')
                ->leftJoin('farms', 'farms.id', '=', 'chemprogramuser.farms_id')
                ->leftJoin('users', 'users.id', '=', 'chemprogramuser.manager_id')
                ->leftJoin('chemprogramapp', 'chemprogramapp.programuser_id', '=', 'chemprogramuser.id')
                ->groupBy('chemprogramuser.id')
                ->orderBy('chemprogramuser.id', 'desc')
                ->where('chemprogramuser.program', '=', 1)
                ->whereIn('chemprogramuser.farms_id', $farm_ids)
                ->get();

我正在使用外观的方法GREATEST从两个表中选择日期。一旦我更改了查询,我就收到了一个带有 message的 jquery 。但这只是在生产服务器上,而不是在我的本地主机上。DBrawInvalidArgumentExceptionTrailing data

有人可以告诉我为什么会发生这个错误吗?

Laravel 版本:5.6.39

4

1 回答 1

0

所以我找到了我的答案,所以我发布它。似乎是我DB::raw()在查询中调用函数的方式导致了错误。该raw()函数应封装完整的select查询字符串,即

select(
    DB::raw(
        ' chemprogramuser.id, chemprogramuser.farms_id as fid, ' .
        ' chemprogramuser.description as head, chemprogramuser.hectares as ha, ' .
        ' GREATEST(chemprogramuser.updated_at, COALESCE(chemprogramapp.updated_at, \'1000-01-01\')) AS updated_at, ' .
        ' farms.name as fname, users.name, users.id as uid, chemprogramuser.type '
        )
    )

然后由于某种原因,查询不会导致错误,即使错误InvalidArgumentException与 message一样晦涩难懂Trailing data

于 2021-06-04T12:11:33.430 回答