为了账号安全,请及时绑定邮箱和手机立即绑定

从查询的查询中引用变量

从查询的查询中引用变量

PHP
HUX布斯 2021-06-14 17:56:45
我的控制器上有这个:$results = Model::where('foreign_id', $id)->get();结果是:Collection {#111 ▼  #items: array:3 [▼    0 => Model {#112 ▶}    1 => Model {#113 ▶}    2 => Model {#114 ▶}  ]}但是,我需要$results进一步访问这些:$role_A = $results->where('role_id', 1);$role_B = $results->where('role_id', 2);$role_C = $results->where('role_id', 3);我的问题是,如果我通过以下方式引用它们,则会出错:$user_A = $role_A->created_at;$user_B = $role_B->created_at;$user_C = $role_C->created_at;我仍然需要像这样包括他们的索引位置:$user_A = $role_A[1]->created_at;我的问题是无法知道我引用它们的索引位置,例如,$user_A可以是下面的任何一个。$user_A = $role_A[0]->created_at;$user_A = $role_A[1]->created_at;$user_A = $role_A[2]->created_at;有什么方法可以更有效地从查询查询中引用变量?
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

您必须每次都获得一个集合,而不是一个 QueryBuilder。

例如,做这样的事情

$role_A = $results->where('role_id', 1)->first();
$role_B = $results->where('role_id', 2)->first();
$role_C = $results->where('role_id', 3)->first();

得到你想要的作为一个集合。


查看完整回答
反对 回复 2021-06-25
?
慕森卡

TA贡献1806条经验 获得超8个赞

您需要筛选基础上,你的收藏role_id


对于role_id2 个你做的


$results = $results->filter(function ($value, $key) {

    return $value->role_id == 2;

});

或直接在第一个查询中添加 where


$results = Model::where('foreign_id', $id)->where('role_id', 1)->first();


查看完整回答
反对 回复 2021-06-25
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

你可以简单地添加一个 first

$role_A = $results->where('role_id', 1)->first();


查看完整回答
反对 回复 2021-06-25
  • 3 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信