Как установить значение по умолчанию, если данные объединения не существуют в laravel? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть две таблицы. product и inventory. Я хочу покинуть product с inventory. Существует также операция суммирования на основе инвентаризации.

Мой код указан ниже,

DB::table('product')
    ->leftjoin('inventory','product.id','=','inventory.product_id')
    ->select('product.id as id',
            'product.name as name',
            'product.color as color',
            'product.unit_price as unit_price',
            DB::raw('SUM(inventory.stock)::integer as available_stock'))
     ->groupBy('product.id')
     ->get();

Моя проблема в том, что существует много продуктов, для которых нет строк в таблице инвентаризации. В этом случае available_stock дает мне null. Вместо null я хочу показать строку по умолчанию. Что-то вроде «не в наличии» или «0». Как я могу этого достичь?

Я использую postgresql.

1 Ответ

0 голосов
/ 11 марта 2020

Таким образом, вы можете установить значение по умолчанию для доступного запаса.

Это даст ноль, когда инвентарь недоступен.

DB::table('product')
->leftjoin('inventory','product.id','=','inventory.product_id')
->select('product.id as id',
        'product.name as name',
        'product.color as color',
        'product.unit_price as unit_price',
        DB::raw('(case when inventory.product_id is null then 0 else SUM(inventory.stock)::integer end) as available_stock'))
 ->groupBy('product.id')
 ->get();
...