我有一个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'
时出错。这是合乎逻辑的,因为我没有此列,但是我使用$append
和mutator
附加了它。
我发现了一个名为filters
的东西,但由于使用paginate(10)
,我认为这不是一个好的解决方案,因此我将返回10
值并对其进行过滤。
我还有很多其他条件,并且过滤器对我没有用。
答案 0 :(得分:1)
如果要将WHERE
与mutator
创建的属性一起使用,则必须先创建Collection
,然后使用Where
语句。
$condition_queries = Product::withCreditsAndWarehouses()->get()->where('report_total_quantity', '>', 0);
但是在->get()
之后,您将无法使用paginate
。相反,您必须使用Collection
分页方法forPage
。 Check this