当前位置: 首页 > 知识库问答 >
问题:

集合中的Laravel计数值

秦琦
2023-03-14

如何得到这个数据的乘法和。

这是我的kvit表

id | hamkor_id | oper_type 
1  |  10       |     20     

这是手术台

id | kvit_id | product_id | store_id| amount | price 
1  |     1   |     5      |    1    |    10  |   15
2  |     1   |     6      |    1    |    5   |   10

这里是关系

class Kvit extends Model
{
use HasFactory;

public function operation(){
    return $this->hasMany(Operation::class);
}

public function hamkor(){
    return $this->belongsTo(User::class, 'hamkor_id','id');
}

public function user(){
    return $this->belongsTo(User::class);
}

public function store(){
    return $this->belongsTo(Store::class);
 }
}

这是控制器

$user = Auth::id();
    $datas = Kvit::with('user', 'hamkor', 'store', 'operation')->where('user_id', $user)->get();
    return view('operations.index', compact('datas'));

这是我的看法

    <table class="datatables-basic table" id="example">
    <thead>
    <tr>
        <th>#</th>
        <th></th>
        <th>Date</th>
        <th>Hamkor</th>
        <th>Store</th>
        <th>Summ</th>
        <th>Amallar</th>
    </tr>
    </thead>
    <tbody>
    @foreach($datas as $idx => $data)
        <tr>
            <td>{{$idx+1}}</td>
            <td></td>
            <td>{{$data->date}}</td>
            <td>{{$data->hamkor->name}}</td>
            <td>{{$data->store->name}}</td>
            <td>{{ **here i want to get result(200)** }}</td>
            <td>
                <a href="#" class="btn btn-icon btn-flat-primary">
                    <i class="fas fa-edit"></i>
                    Edit
                </a>
                <a href="#" class="btn btn-icon btn-flat-primary">
                    <i class="fas fa-view"></i>
                    View
                </a>

                <a href="#" class="btn btn-icon btn-flat-primary">
                    <i class="fas fa-trash"></i>
                    Delete
                </a>
            </td>
        </tr>
    @endforeach
    </tbody>

我需要将每种产品的数量乘以价格,得到总金额。这是收据的总金额(1015510)=200怎么可能?

共有2个答案

衡安晏
2023-03-14

这不是测试,我现在没有这样的例子,但也许你可以解决类似的问题。在kvit模型类中创建一个方法

public function self_amount()
{
   $sum = 0;
   if($this->operation()->exists()) // or count($this->operation)
     $operation = $this->operation->filter(function($item) use ($sum) {
        $sum += $item->amount * $item->price;
     });
   return $sum;
}

在刀刃上

<td>{{$data->self_amount()}}</td>
傅元龙
2023-03-14

如果我理解正确,您希望计算操作表中金额*价格列的总和,按kvit\u id分组?

您可以通过向Kvit模型添加自定义属性来解决这个问题。

// Kvit model
class Kvit extends Model
{
    public function getTotalPriceAttribute(): float
    {
        return $this->operation->sum( function($operation) {
            return $operation->amount * $operation->price;
        });
    }
}

在刀片式视图中,您只需调用:

{{ $data->kvit->total_price }}

这是解决你问题的一种方法

几句话:

  1. 操作不应该是复数的吗,因为它是一个关系?(操作)?
  2. 我使用浮动作为返回类型,但是这可能是一个整数,取决于您的实现。
  3. 你可以删除$idx=

完整的例子:

class Operation
{
    public $amount;
    public $price;

  
    public function __construct($amount, $price)
    {
      $this->amount = $amount;
      $this->price = $price;
    }
}

class Kvit
{
    public $operations;
  
    public function __construct($operations)
    {
      $this->operations = $operations; 
    }
  
    public function calculate(): float
    {
        return $this->operations->sum( function($operation) {
            return $operation->amount * $operation->price;
        }); 
    }
}

$operation1 = new Operation(10, 15);
$operation2 = new Operation(5, 10);

$operations = collect([$operation1, $operation2]);

$kvit = new Kvit($operations);

$kvit->calculate(); // returns 200

 类似资料:
  • 我一直在努力如何从雄辩的收藏中获得不同价值的数量。 我一直在尝试几种方法,如独特(),值()等。,在文档上找到的。即使确实有一个count()方法,也没有方法来获取不同值的计数。 例如,通过应用以下查询 我得到这个收藏: 因为我只想得到最高的度数(一个用户Id可能有几个历史度数),所以我应用unique()方法,根据文档,它只留下第一个原始值,在我的例子中,我已经按层次结构desc对它们进行了排序

  • 如果是,我该怎么做?

  • 我有两个Laravel雄辩的模型,和,从产品到ProductCategory之间有一个名为的关系。 我已经让模型集合在显示刀片中的循环中迭代,但希望能够根据关系获得产品数量的计数。。。 IE:在集合中20个模型的结果集中,可能有5个电机、5个齿轮箱和5个Acme小部件。我试图找到一种方法来输出作为结果一部分返回的类别列表,以及与每个返回类别相关的记录数。 产品模型 产品类别模型 控制器方法 期望输

  • 我目前正在从事一个项目,在该项目中,我给出了一个实体,该实体具有一个集合,即订单,因此客户和订单之间存在一种单一关系。假设我想选择具有相应数量的订单实体(在SQL中称为计数)的客户集合的子集:Spring Data JPA提供的查询方法是否已经有了默认实现,以避免使用JPQL编写自定义查询,该查询在一个SQL查询中而不是在n 1个查询中获取客户订单的数量其中n是客户数量?或者可以在某种瞬态字段(例

  • 我想访问嵌套集合属性与以下结构<代码>["角色"= 为了得到我想要的,我使用laravel集合方法通过执行

  • 我正在用Laravel 5.2开发一个Web应用程序,但有一个问题我无法解决。 我有一个扩展了雄辩模型的模型,但当我试图输出带有“where”的数据库表时,例如 它返回一个包含许多信息的集合,这些信息此时对我来说无用,比如“守卫”、“键入”...我的表的数据在“属性”下。遵循laravel的指南,我看到每个人都像我一样简单地使用它,然后用