我的控制器上有这个
$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;
有什么方法可以更有效地引用查询中的变量?
答案 0 :(得分:2)
您需要根据role_id
来filter
对于role_id
(您有2个人)
$results = $results->filter(function ($value, $key) {
return $value->role_id == 2;
});
或直接在第一个查询中添加位置
$results = Model::where('foreign_id', $id)->where('role_id', 1)->first();
答案 1 :(得分:1)
您必须每次都获得一个集合,而不是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();
获得想要的收藏。
答案 2 :(得分:0)
您只需添加一个first
$role_A = $results->where('role_id', 1)->first();