逻辑异常:必须返回一个关系实例

时间:2018-07-25 16:04:47

标签: php laravel twig

我正在尝试使用以下功能在使用Twig视图模板时显示库存水平标志。但是我收到以下错误:LogicException Cart \ Models \ Product :: hasLowStock必须返回一个关系实例。 我已经研究了一段时间,找不到解决方法。我对php比较陌生。

这是我的代码:     

namespace Cart\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    public function hasLowStock()
    {
        if($this->outOfStock()) {
            return false;
        }

        return (bool) $this->stock <= 5;
    }

    public function outOfStock()
    {
        return $this->stock === 0;
    }

    public function inStock()
    {
        return $this->stock >= 1;
    }

    public function hasStock($quantity)
    {
        return $this->stock >= $quantity;
    }
}

这是我用来显示产品/库存的树枝视图:     {%扩展了'templates / app.twig'%}

{% block content %}
    <div class="container mt-4">
        <div class="row">
            <div class="col-md-6">
                <img src="{{ product.image }}" alt="{{ product.title }} image." class="card img-fluid">
            </div>
        <div class="col-md-6">
            {% if product.hasLowStock %}
                <span class="label label-warning">Low stock</span>
            {% endif %}

            {% if product.outOfStock %}
                <span class="label label-danger">Out of stock</span>
            {% endif %}

            {% if product.inStock %}
                <span class="label label-danger">Out of stock</span>
            {% endif %}
            <h3>{{ product.title }}</h3>
            <p>{{ product.description }}</p>
        </div>
        </div>
    </div>

{% endblock %}

1 个答案:

答案 0 :(得分:0)

hasLowStock()等是方法,而不是属性:

{% if product.hasLowStock() %}
{% if product.outOfStock() %}
{% if product.inStock() %}

您也可以使用accessors

public function getHasLowStockAttribute()
{
    [...]
}

然后您可以将其作为属性访问:

{% if product.hasLowStock %}