通过 orm 对涉及 an:m 关系的模型进行查询的最智能方法

发布于 2025-01-09 20:24:38 字数 958 浏览 1 评论 0原文

我需要从表中提取一些数据;

levels - ----n-----m---company_levels----m---n---company

最简洁的方式:

    $levels = Cga_company_level::where(['company_uuid' => $companyUuid])->get()->pluck('cgaLevel');

第二简洁的方式:

            $levels = Cga_company_level::where(['company_uuid' => $companyUuid])->get();
            $levelIds= $companyLevelsByUuids->pluck('cga_level_id');
            $levels= Cga_level::whereIn('cga_level_id',$levelIds)->get();

老派方式:

$companyLevelsByUuids = Cga_company_level::where(['company_uuid' => $companyUuid])->with('cgaLevel')->get();
$levels = [];
foreach ($companyLevelsByUuids as $companyLevel) {
         $level = $companyLevel->cgaLevel;
         $levels[] = $level;
}

任何其他最聪明的方法?

I need to extract some datas from a table;

leves -----n-----m---company_levels----m---n---company

the cleanest way:

    $levels = Cga_company_level::where(['company_uuid' => $companyUuid])->get()->pluck('cgaLevel');

the second cleanest way:

            $levels = Cga_company_level::where(['company_uuid' => $companyUuid])->get();
            $levelIds= $companyLevelsByUuids->pluck('cga_level_id');
            $levels= Cga_level::whereIn('cga_level_id',$levelIds)->get();

the old school way:

$companyLevelsByUuids = Cga_company_level::where(['company_uuid' => $companyUuid])->with('cgaLevel')->get();
$levels = [];
foreach ($companyLevelsByUuids as $companyLevel) {
         $level = $companyLevel->cgaLevel;
         $levels[] = $level;
}

any other smartest way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

思念绕指尖 2025-01-16 20:24:38

您可以使用levels关系通过不同的方式获得它,但它不一定更有效。另外,您将通过 Id 查找公司,或者在以下查询中使用 whereUuid($companyUuid)->first()

$levels = Company::find($companyId)->levels->get()->pluck('cga_level_id');

You can use the levels relationship to get it through a different way but it might not necessarily be more efficient. Plus, you'll be finding the company through the Id or alternatively use whereUuid($companyUuid)->first() in the following query:

$levels = Company::find($companyId)->levels->get()->pluck('cga_level_id');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文