Eloquent Laravel 5.1中时间戳的where子句

问题描述 投票:0回答:3

我有一张桌子和搜索栏。

enter image description here

当用户输入搜索时,我抓住并查询我的数据库。

这就是我得到的

public function getLogsFromDb($q = null) {

    if (Input::get('q') != '') {
        $q = Input::get('q');
    }
    $perPage = 25;

    if ($q != '') {

        $logs = DB::table('fortinet_logs')
            ->orWhere('account_id', 'like', '%'.$q.'%')
            ->orWhere('cpe_mac', 'like', '%'.$q.'%')
            ->orWhere('p_hns_id', 'like', '%'.$q.'%')
            ->orWhere('g_hns_id', 'like', '%'.$q.'%')
            ->orWhere('data', 'like', '%'.$q.'%')
            ->orWhere('created_at', 'like', '%'.$q.'%') <----🐞
            ->orderBy('updated_at', 'desc')->paginate($perPage) 
            ->setPath('');


            //dd($logs);

        $logs->appends(['q' => $q]);

    } else {

        $logs = DB::table('fortinet_logs')
            ->orderBy('created_at', 'desc')->paginate($perPage)
            ->setPath('');
    }

    return view('telenet.views.wizard.logTable', get_defined_vars());

}

Result

在网络标签中,我一直在接受

未定义的函数:7 ERROR:运算符不存在:没有时区的时间戳~~未知

enter image description here

如何进一步调试?

php laravel laravel-5 eloquent laravel-5.1
3个回答
2
投票

PostgreSQL对不同的数据类型很严格。将timestamp列转换为text:

->orWhereRaw('created_at::text like ?', ['%'.$q.'%'])

1
投票

清理您的输入以避免此类问题

$remove = array("'","!",";","+",'|','||',"&&","}","{","[","]");
$replace = array("","","","","","","","","","","");

$q = str_replace($remove, $replace, $q);

在查询中使用新定义的$ q


0
投票

调试的第一步是通过这个来创建一个sql。你看看你的查询有什么问题。像这样:

 dd($logs = DB::table('fortinet_logs')
            ->orWhere('account_id', 'like', '%'.$q.'%')
            ->orWhere('cpe_mac', 'like', '%'.$q.'%')
            ->orWhere('p_hns_id', 'like', '%'.$q.'%')
            ->orWhere('g_hns_id', 'like', '%'.$q.'%')
            ->orWhere('data', 'like', '%'.$q.'%')
            ->orWhere('created_at', 'like', '%'.$q.'%')//This is the cri
            ->orderBy('updated_at', 'desc')->toSql());

这是显示给你这个查询的问题。顺便说一下,你可以将$ q转换为日期范围,并且可以在此范围内找到日志。

© www.soinside.com 2019 - 2024. All rights reserved.