在 Laravel 中获取数据库表中值的计数

Posted

技术标签:

【中文标题】在 Laravel 中获取数据库表中值的计数【英文标题】:Get number of count of a value in database table in Laravel 【发布时间】:2021-11-23 10:24:59 【问题描述】:

美好的一天。我正在构建一个 API,我想在其中返回一些数据。我有三张桌子

    顾问 cousel_cases analysis_sc

律师表的一部分如下所示

下面还显示了court_cases 的一部分

最后,analysic_sc 的一部分如下所示。

我希望在选择律师时,通过律师 ID,我可以从律师案件中获取属于该律师的案件,然后使用该信息,我希望能够获取该律师的案件数量属于第三个表中的法律负责人(实践领域),如下面的设计所示。

这怎么可能。我在律师和律师案件之间有关系。另外,我尝试使用如下所示的 foreach 循环,但无法获取 legal_head 的唯一值。


    public function getCounselPracticeAreas(Request $request)
    
        $counsel_id = $request->route('counsel_id');
        $cases = CounselCase::select('suit_number')->where('counsel_id', $counsel_id)->get();

        $data = [];
        foreach ($cases as $case) 
            $values = AnalysisSc::select('legal_head')->where('suitno', $case->suit_number)->first(); 
            array_push($data, $values);
        

        return response()->json([
            "message" => "successful",
            "data" => $data
        ]);
    
However, this is the value I get
[![enter image description here][5]][5]

我想得到这样的东西:

$data : [
            "legal_head" : [
                "name" : "Criminal Law",
                "count" : 2
             ]   
       ]

请问,这可能吗 我知道这很长。我希望我能很好地解释自己。谢谢

【问题讨论】:

【参考方案1】:

您需要使用 SQL Joins 来创建表之间的关系并获取数据

【讨论】:

【参考方案2】:

您似乎正在跳过在模型中使用关系。设置好模型后,使用 Laravel 检索所需的数据会容易得多。您可能希望将模型/表进一步分开并添加关系,如下所示:

模型/表格:

顾问(顾问)

身份证 姓名

LegalHead (legal_heads)

身份证 姓名

案例(案例)

身份证 西装号码 年 subject_matter legal_head_id

case_counsels(这不是模型,只是关系表

身份证 case_id cousel_id appearing_for 角色

注意:我不确定您的数据的结构。您可以将其用作开始并根据需要进行调整。

关系

Many-Many 关系适用于案件顾问,您可以将角色添加为关系的枢纽(额外字段)。

https://laravel.com/docs/8.x/eloquent-relationships#many-to-many

案例

legal_head: belongsTo counsels:belongsToMany 以角色为中心

顾问

案例:belongsToMany 与角色枢轴

检索对象

设置完成后,您将无需执行太多查询工作。您可以通过 counselslegal_head 及其在每个案例中的角色来获取案例数据:

$cases = Case::with('counsels','legal_head')->get();

这是为了获得带有案件数量的法律负责人姓名:

$legal_heads = LegalHead::withCount('cases')->get();

【讨论】:

以上是关于在 Laravel 中获取数据库表中值的计数的主要内容,如果未能解决你的问题,请参考以下文章

获取列中值的计数并在图中显示它们的百分比

如何获取列中值的不同计数

如何在MySQL中获取具有同一表计数的列

Laravel 仅按日期分组并获取计数

获取模式中所有表的计数

Laravel 5.2 orderBy与ofCount的关系导致SQL错误,因为尝试获取列而不是计数失败