Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.01.2016 15:26:06

WebDev

Where с условием

Всем привет. Есть метод который принимает $productId, но $productId может быть null или значение, как сделать что бы когда $productId = null, то where вообще не выполнялось.

public function getOperations($productId)
    {
        return  $this->model
            ->join('articles', 'articles.id', '=', 'operation_articles.article_id')
            ->leftJoin('product_options', 'product_options.id', '=', 'books.product_option_id')
            ->leftJoin('products', 'products.id', '=', 'product_options.product_id')
            ->select(
                'booking_tour_points.id',
                'bookings.date',
            )
            ->where('products.id', $productId)
            ->get();
    }

#2 19.01.2016 19:32:35

Re: Where с условием

public function getOperations($productId)
    {
        $return = $this->model
            ->join('articles', 'articles.id', '=', 'operation_articles.article_id')
            ->leftJoin('product_options', 'product_options.id', '=', 'books.product_option_id')
            ->leftJoin('products', 'products.id', '=', 'product_options.product_id')
            ->select(
                'booking_tour_points.id',
                'bookings.date',
            );

            if ( $productId != null )
                $return->where('products.id', $productId)
            return $return->get();
    }

это есть в документации

Изменено hzone (19.01.2016 19:32:50)

Не в сети

#3 20.01.2016 14:19:25

WebDev

Re: Where с условием

Изменю немного метод:

public function getOperations($productId)
    {
        $first = $this->model
            ->join('articles', 'articles.id', '=', 'operation_articles.article_id')
            ->leftJoin('product_options', 'product_options.id', '=', 'books.product_option_id')
            ->leftJoin('products', 'products.id', '=', 'product_options.product_id')
            ->select(
                'booking_tour_points.id',
                'bookings.date',
            )
            ->where('products.id', $productId)
            ->where('bookings.date', $date)
           ->groupBy('products.id');

        return $this->model
            ->join('articles', 'articles.id', '=', 'operation_articles.article_id')
            ->leftJoin('product_options', 'product_options.id', '=', 'books.product_option_id')
            ->leftJoin('products', 'products.id', '=', 'product_options.product_id')
            ->select(
                'booking_tour_points.id',
                'bookings.date',
            )
            ->where('products.id', $productId)
            ->where('bookings.date', $date)
            ->groupBy('bookings.date')
            ->union($first);
    }

Подвал раздела