在 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 与角色枢轴检索对象
设置完成后,您将无需执行太多查询工作。您可以通过 counsels、legal_head 及其在每个案例中的角色来获取案例数据:
$cases = Case::with('counsels','legal_head')->get();
这是为了获得带有案件数量的法律负责人姓名:
$legal_heads = LegalHead::withCount('cases')->get();
【讨论】:
以上是关于在 Laravel 中获取数据库表中值的计数的主要内容,如果未能解决你的问题,请参考以下文章