Home » Php » php – Laravel eloquent how to get the minimum value that is not NULL?

php – Laravel eloquent how to get the minimum value that is not NULL?

Posted by: admin July 12, 2020 Leave a comment

Questions:

This is the code in my Product model to get the minimum price value (one product can have multiple price)

public function getLowestAttribute ()
{
    return $this->prices->min('price');
}

But it will return NULL rather than the smallest integer if there is a NULL.

Basically I want to achieve this:

[1, NULL, 2] returns 1

[1, NULL, 0] returns 0

Any suggestion would be appreciated.

How to&Answers:

I found filter, and it works now.

public function getLowestAttribute ()
{
    $prices = $this->prices->filter(function ($item) {
        return !is_null($item->price);
    });

    return $prices->min('price');
}

Answer:

Have you tried maybe

public function getLowestAttribute ()
{
    return $this->prices->where('price','>=',0)->min('price');
}

Answer:

A fix to the KuKeC answer would be

public function getLowestAttribute()
{
    return $this->prices->where('price', '!==', null)->min('price');
}