Красноречивый пункт о метке времени в Laravel 5.1 - PullRequest
0 голосов
/ 29 октября 2018

У меня есть таблица и панель поиска.

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());

}

Результат

На вкладке сети я продолжал получать

Неопределенная функция: 7 ОШИБКА: оператор не существует: отметка времени без часового пояса ~~ неизвестно

enter image description here

Как можно отладить это дальше?

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

PostgreSQL строго относится к различным типам данных. Преобразовать столбец отметки времени в текст:

->orWhereRaw('created_at::text like ?', ['%'.$q.'%'])
0 голосов
/ 29 октября 2018

первый шаг на отладке, чтобы сделать 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 к дате и найти в этом диапазоне логи.

0 голосов
/ 29 октября 2018

очистите ваши данные, чтобы избежать подобных проблем

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

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

Используйте новый определенный $ q в вашем запросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...