Laravel向where子句添加自定义属性

时间:2019-07-14 13:04:11

标签: laravel eloquent

我有一个mutator,可以通过以下方式计算产品的现有数量:

对产品信用额加总,并从已售信用额中减去它

public function getReportTotalQuantityAttribute() {
    // GET IMPORT INVOICE SUM
    $import_invoices_sum = $this -> credits -> sum('quantity');

    // GET EXPORT INVOICE SUM
    $export_invoices_sum = $this -> sold -> sum('quantity');

    // CALCULATE THE SUM
    return $import_invoices_sum - $export_invoices_sum;
}

mutator正常工作,每当我调用模型时都将实际产品数量作为report_total_quantity属性返回。

我正在尝试做的事情:

我正在尝试获取产品where('report_total_quantity', '>', 0)

我尝试过的事情:

$condition_queries = Product::withCreditsAndWarehouses() -> where('report_total_quantity', '>', 0);

但我说Unknown column 'report_total_quantity'时出错。这是合乎逻辑的,因为我没有此列,但是我使用$appendmutator附加了它。

我搜索到的内容:

我发现了一个名为filters的东西,但由于使用paginate(10),我认为这不是一个好的解决方案,因此我将返回10值并对其进行过滤。

我还有很多其他条件,并且过滤器对我没有用。

1 个答案:

答案 0 :(得分:1)

如果要将WHEREmutator创建的属性一起使用,则必须先创建Collection,然后使用Where语句。

 $condition_queries = Product::withCreditsAndWarehouses()->get()->where('report_total_quantity', '>', 0);

但是在->get()之后,您将无法使用paginate。相反,您必须使用Collection分页方法forPageCheck this