Laravel查询生成器在选择中使用Mutator值 我想做的是:
我正在努力:Laravel查询生成器在选择中使用Mutator值 我想做的是:,laravel,eloquent,Laravel,Eloquent,我正在努力: 联接两个表(发票表和销售产品表) 唯一产品总和已售出产品。数量*已售出产品。已售出价格 我所做的: 一切正常,并返回预期值 问题是: 我在SoldProducts.php模型中有一个mutator这个mutator附加到字段item\u net\u price。 我想使用项目净价格而不是售价(正如我在上面代码的注释中添加的那样)。使用左连接而不是右连接,这样你就可以使用SoldProductmutator $product=SoldProduct::leftJoin('expo
- 联接两个表(发票表和销售产品表)
- 唯一产品总和
已售出产品。数量*已售出产品。已售出价格
SoldProducts.php模型中有一个mutator
这个mutator附加到字段item\u net\u price
。
我想使用
项目净价格
而不是售价
(正如我在上面代码的注释中添加的那样)。使用左连接
而不是右连接
,这样你就可以使用SoldProduct
mutator
$product=SoldProduct::leftJoin('export\u invoice'、'self\u products.export\u invoice\u id'、'export\u invoices.id')
->挑选(
“已售出产品。产品id”,
//您不能在DB::raw中使用mutator,但可以这样做:
DB::raw('总(售价*1.14*数量)为bam')
)
->groupBy(“已售出的产品。产品id”)
->get();
然后得到变异子:
$product[0]->商品净价
mutator来自elount,但连接创建了数据库生成器。因此你失去了变异子。那么你能帮我一个解决方案吗?那么你的变异子是什么呢?变异子getItemNetPriceAttribute
只要返回$this->售价*1.14
@AE1995我已经发布了我的答案,你可以试试。问题是我想用商品净价
变数,而不是DB::raw()中的售价
,这是不正确的possible@MatthiasS不能在DB raw中使用mutator,但可以使用DB::raw('sum(售价*1.14*数量)作为bam')
而不是sum(商品净价*数量)
ExportInvoice::rightJoin('sold_products', 'sold_products.export_invoice_id', '=', 'export_invoices.id')
->select(
'sold_products.product_id',
DB::raw('sum(sold_price * quantity) as bam') // I want to use the mutator not sold_price
)
->groupBy('sold_products.product_id')
->get();