Laravel - возвращает другой запрос, если запрос нулевой - PullRequest
0 голосов
/ 06 сентября 2018

запрос, который я написал, может в какой-то момент содержать пустые столбцы, в результате чего запрос возвращает пустой массив, даже если в таблице кампаний есть значение.Это вызвано тем, что запрос не может сделать join, если значения столбца равны нулю.Я пытаюсь написать оператор if для возврата campaign, даже если его значения равны нулю, но он по-прежнему возвращает пустой массив.Если я запускаю запрос в операторе if, он возвращает мне то, что я ищу, я просто не могу получить оператор if для запуска.

  public function getCampaigns(Request $request)
  {
    $authUser = auth()->user();
    $business = $authUser['business_id'];
    $query = campaigns::join('offers', 'campaigns.offer_id', '=', 'offers.id')
            ->join('conditionals', 'campaigns.conditional_id', '=', 'conditionals.id')
            ->join('triggers', 'campaigns.offer_id', '=', 'triggers.id')
            ->select('campaigns.*',
            'triggers.name AS trigger_name',
            'offers.name AS offer_name',
            'offers.reward_amount as offer_reward_amount',
            'offers.plaid_category_id as offer_plaid_id',
            'conditionals.dollars_min',
            'conditionals.dollars_max',
            'conditionals.dollars_more',
            'conditionals.xDays as days_since_last_purchase',
            'conditionals.xDate as date_since_last_purchase',
            'conditionals.xPercent as percentage_more',
            'conditionals.xPurchases as purchases_x_times',
            'conditionals.start_date',
            'conditionals.end_date',
            'conditionals.plaid_category_id')
            // ->whereNull('campaigns.trigger_id', 'campaigns.offer_id', 'campaigns.conditional_id')
            ->where('campaigns.business_id', '=', $business);
    if ($query->count() === 0){
      $query = campaigns::select('*')->where('business_id', '=', $business);
    }
    return $query->get();
  }

1 Ответ

0 голосов
/ 06 сентября 2018

Метод get () построителя запросов не возвращает ноль, если не найдено результатов, он возвращает пустую коллекцию.

Вместо этого проверьте пустую коллекцию:

if ($query->count() === 0){

Iрекомендовал бы переименовать $ query для удобства чтения, поскольку ему не присвоен запрос, ему назначены результаты.

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