Ссылка на переменную из запроса запроса - PullRequest
1 голос
/ 20 мая 2019

У меня есть это на моем контроллере:

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

2 голосов
/ 20 мая 2019

Вам необходимо отфильтровать вашу коллекцию на основе role_id

для 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 голос
/ 20 мая 2019

Вы должны получать коллекцию каждый раз, а не 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();

чтобы получить то, что вы хотите, как коллекцию.

0 голосов
/ 20 мая 2019

Вы можете просто добавить first

$role_A = $results->where('role_id', 1)->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...