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();