如何基于表添加自定义列-Laravel

问题描述 投票:1回答:1

我有一个查询,需要在另一个表“ history”的基础上添加一列(is_found),如果product_id存在于表“ history”上,则列值(is_found)变为1,否则其值保持为0 。

这是我的查询:

Product::select(
    'products.id as product_id',
    'products.name',
    'products.desc',
    'products.image',
    'products.barcode',
    'categories.name as category_name',
    'categories.id as category_id',
)
    ->leftJoin(
        'categories',
        'products.category_id',
        '=',
        'categories.id'
    )
php mysql laravel laravel-query-builder
1个回答
0
投票

尝试一下:

Product::select(
    'products.id as product_id',
    'products.name',
    'products.desc',
    'products.image',
    'products.barcode',
    'categories.name as category_name',
    'categories.id as category_id',
    \DB::raw('IF(history.product_id, 1, 0) AS is_found')
)
    ->leftJoin(
        'categories',
        'products.category_id',
        '=',
        'categories.id'
    )
   ->leftJoin('history', 'products.id','=','history.product_id')

或:

Product::select(
    'products.id as product_id',
    'products.name',
    'products.desc',
    'products.image',
    'products.barcode',
    'categories.name as category_name',
    'categories.id as category_id',
    \DB::raw('IF((select product_id from history where history.product_id = products.id), 1, 0)')
)
    ->leftJoin(
        'categories',
        'products.category_id',
        '=',
        'categories.id'
    );
© www.soinside.com 2019 - 2024. All rights reserved.