我们如何计算数据库中的foreach循环字段?

时间:2020-07-25 08:36:04

标签: laravel

这是News模型

<?php

namespace Modules\Newsletter\Entities;

use Brexis\LaravelWorkflow\Traits\WorkflowTrait;
//use Hyn\Tenancy\Abstracts\TenantModel as TenancyModel;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class News extends Model {
    use WorkflowTrait;

    protected $table = 'news_info';
    protected $fillable = [
        'title', 'header', 'description', 'status', 'created_by', 'media_url', 'media_thumbnail',
    ];

Status字段中,我们存储了validatedpre_validation之类的值。

这是我提供数组中所有字段的方法。

public function newsStatusCount(Request $request){
        $status=News::all('status');
    return $status;


    }

我得到了这个输出

[
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "validated"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
    {
        "status": "pre_validation"
    },
]

如果我将count()函数用于$ status,它将给出状态数。 我想计算状态为pre_validationvalidated的新闻数量。 有人可以帮助我吗? 帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

要检查多少新闻具有这些状态,请使用多个 function set_sensitive_data() { $.ajax({ url: "{% url 'some_sensitive_view' %}", method: "POST", data:{ 'csrfmiddlewaretoken': "{{ csrf_token }}", 'sensitive_data': "{{ some_data }}" }, }); } 子句

where

答案 1 :(得分:0)

    $status=News::select('status', DB::raw('count(*) as total'))
             ->groupBy('status')
             ->get();

尝试我的回答,它将解决您的问题。