从查询的查询中引用变量

我的控制器上有这个:


$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;

有什么方法可以更有效地从查询查询中引用变量?


HUX布斯
浏览 118回答 3
3回答

暮色呼如

您必须每次都获得一个集合,而不是一个 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();得到你想要的作为一个集合。

慕森卡

您需要筛选基础上,你的收藏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();

德玛西亚99

你可以简单地添加一个 first$role_A = $results->where('role_id', 1)->first();
打开App,查看更多内容
随时随地看视频慕课网APP