как сделать Eloquent запрос, чтобы поле даты совпадало со значениями моего массива, переданного с помощью ajax в предложении where - PullRequest
0 голосов
/ 04 мая 2018

У меня есть массив из трех значений даты, и я хотел бы сделать красноречивый запрос для laravel, чтобы мое поле create_at могло соответствовать любому из значений в моем массиве Моя таблица содержит следующие три значения, переданные с помощью ajax: сегодняшняя дата, дата за 7 дней до и дата за 30 дней до. Я хочу получить сегодняшние предложения, начиная с 7 дней до и 30 дней до, в зависимости от установленного флажка 3. Вот запрос, который я сделал, но он не находит никакого предложения в моей базе данных, и это нормально.

if (isset($request->finalDate)) {
        $finalDate = $request->finalDate;
        $filtreDate = Job::with(['Category', 'Ville', 'Type', 'Salaire', 'User', 'Entreprise', 'Level'])
            ->where('created_at', '=', explode(',', $finalDate))
            ->where('confirmed', 1)
            ->orderBy('updated_at', 'desc')
            ->paginate(5);
        response()->json($filtreDate);

вот некоторые из моих переключений javascript кода на ajax

 var date = [];
       $(".filtreDate").each(function () {
           if($(this).is(":checked")) {
               date.push($(this).val());
           }
       });
       finalDate = date.toString();
       console.log(finalDate);

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Вы можете использовать функцию доводчика для created_at

$finalDate = $request->finalDate;
$dateArray = explode(',', $finalDate);
$query = Job::with(['Category', 'Ville', 'Type', 'Salaire', 'User', 'Entreprise', 'Level'])
                ->where('confirmed', 1);
if ($dateArray) {
     $query->where(function($q) use($dateArray) {
        $q->whereDate('created_at','=',array_shift($dateArray));
                foreach ($dateArray as $date) {
                    $q->orWhereDate('created_at', '=', $date);
                }
            });
        }
$filtreDate = $query->orderBy('updated_at', 'desc')
                ->paginate(5);

Примечание: whereDate введено в Laravel 5.3

0 голосов
/ 04 мая 2018

На основании информации, полученной от внешнего интерфейса, я обновил свой ответ;

Это может не сработать, но должно указывать правильное направление:

$dates = explode(',', $finalDate);

$query = Job::with(['Category', 'Ville', 'Type', 'Salaire', 'User', 'Entreprise', 'Level'])
    ->where('confirmed', 1)
    ->orderBy('updated_at', 'desc');


$query = $query->whereDate('created_at', array_shift($dates));

foreach ($dates as $date) {
    $query = $query->orWhereDate('created_at', $date);
}

$results = $query->->paginate(5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...