我有三种型号:发票、发票项和产品。
每个发票都与Invoiceitems模型有许多关系。
每个发票项目与产品模型有一个关系。
我需要计算产品类别为4的Invoiceitem产品金额的总和。
表结构
发票
id |日期|总金额|
发票项目
id|发票|product_id|product_amt|数量|total_amt
产品
ID|product_name|category_id
关系
发票模型
public function invoiceitems()
{
return $this->hasMany('App\Invoiceitems', 'invoiceid', 'id');
}
发票项目模型
public function products()
{
return $this->hasOne('App\Products', 'id', 'product_id');
}
预期报告
发票号|日期|蔬菜类产品金额|非蔬菜类产品金额|总金额
KL0001 | 15-05-2021 | 0.00 | 190.366 | 190.366
KL0002|16-05-2021|20.00|350.000|370.000
目前,我们使用以下帮助函数来获取特定类别产品的总金额
function getInvdiscsumamt($inv_id, $prdtype)
{
$totaldisamt = Invoiceitems::Where('invoice_id', $inv_id)->whereHas('products', functhtml" target="_blank">ion ($query) use ($prdtype) {
$query->where('category_id', $prdtype);
})->sum('total_amt');
return $totalpdtamt;
}
如何使用Elequoent方法显示特定类别的产品总量
您可以尝试Eloquent中已经存在的聚合函数之一,请参阅https://laravel.com/docs/8.x/eloquent-relationships#other-聚合函数,例如withSum
:
$invoiceItem = InvoiceItem::query()
->where('invoice_id', $invId)
->withSum(['products', function($query) use ($productType) {
$query->where('category_id', $productType);
}, 'frequency'])
->first();
然后,您的属性将使用属性{关系}_{函数}_{列}
可用,因此在本例中products_sum_frequency
。
请注意,withSum
不与with
(或whereHas
)函数共享任何内容,这意味着如果在查询中使用子选择,如-
我还建议在您的功能和型号中使用适当的外壳。我也会对所有模型类名使用单数名称。因此,
Invoiceitems
将成为InvoiceItem
(models/InvoiceItem.php
)。据我所知,这是在laravel中定义它的默认方式。
这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统
我试图编写一个查询,它从模型中选择列,然后从关系表中选择一列。 如何从此查询中的关系表中获取列?
问题内容: 在两列上可能有hasMany关系吗? 我的表格有两列,和。 我希望我的关系匹配任一列。 在我的模型中 运行查询:。 我需要运行的查询是: 编辑: 我正在使用急切加载,我认为这将影响它的工作方式。 问题答案: 我认为不可能完全按照您的要求去做。 我认为您应该将它们视为独立的关系,然后在模型上创建一个新方法来检索两者的集合。 这样,您仍然可以获得在模型上进行预先加载和关系缓存的好处。
我在一个laravel控制器中运行以下代码, 但是我似乎从服务器上得到了以下错误, {“error”:{“type”:“ErrorException”,“message”:“preg_replace():参数不匹配,模式为字符串,而替换为数组”,“file”:“/Users/S/Sites/app api/vendor/laravel/framework/src/illumb/Support/he
我有3个标签:用户、教师和帖子。 用户: id-integer name-string 教师: id-integer 教师id-integer 用户id-integer 姓名-string 帖子: id-integer user\u id-integer title-string 用户模型: 教师模式: ??问题是我如何使用这样的东西:
我在Books表和Authors表之间有多对多的关系。透视表(author_book)包含author_id和book_id。