Laravel5帮助构建查询语法

时间:2015-11-25 13:21:38

标签: mysql database laravel

有人可以建议我该怎么做? 我有两列 - pricediscount_price。列discount_price的许多值可以是NULL。 我希望discount_price显示数据库中的值是NULL,还是向客户显示price。 它应该几乎像if语句:

if($discount_price != NULL) {
    return $discount_price
}
else {
    return $price
}

这是我的查询,它无法正常工作:

$products = Product_Lang::select(\DB::raw('products_lang.*'))
            ->join('products', 'products_lang.product_id', '=', 'products.id')
            ->join('category_product', 'products.id', '=', 'category_product.product_id')
            ->where('language_code', App::getLocale())
            ->where('display', 1)
            ->where('category_id', $category->id)
            ->selectRaw('CONCAT(name, " ", model) AS product_name, products.id')
            ->selectRaw('COALESCE(discount_price, price) AS product_price')
            ->orderBy($sortby, $order)
            ->paginate(50);

1 个答案:

答案 0 :(得分:0)

确保您的discount_price字段的值为NULL,而不仅仅是空字段。如果您的字段值为空,则COALESCE将返回一个空值,仅当您的字段值为Null时,它才会起作用。

如果以这种方式解决,请将您的discount_price默认值设为' NULL'在数据库中。