Как я могу использовать функцию уменьшения/отклонения/карты для коллекций Laravel?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу использовать функцию уменьшения/отклонения/карты для коллекций Laravel?

Сообщение Anonymous »

В настоящее время я использую функцию show в своем UserController.php, чтобы показать всех пользователей, принадлежащих определенной компании.

/**
* Show the list of all users.
*
* @return Response
*/
public function show() {
$users = User::where('status',1)->with(['phones', 'companies'])->get(['id', 'first_name', 'last_name', 'email']);
$filteredUsers = [];
foreach($users as $user){
foreach($user->companies as $company){
if($company->id == session('selected_company')){
$filteredUsers[] = $user;
}
}
}
return view('users', ['team_members' => $filteredUsers]);
}


Это прекрасно работает, но я хочу сделать код более элегантным с помощью коллекций Laravel, надеюсь, с помощью функции map(), ignore() или уменьшить()

Как я могу это сделать?

Я попробовал функцию ignore(), но она продолжает показывать мне всех пользователей в базе данных. Вот что я пробовал:

/**
* Show the list of all users.
*
* @return Response
*/
public function show() {
$users = User::where('status',1)->with(['phones','companies'])->get(['id', 'first_name', 'last_name', 'email']);

$userCollection = collect($users);
$filteredUsers = $userCollection->reject(function ($value) {
$userCompanies = collect($value->companies);
// if user companies contain the id, return that user
if($userCompanies->contains('id', session('selected_company'))){
return $value;
}

});

return view('users', ['team_members' => $filteredUsers->all()]);
}


Подробнее здесь: https://stackoverflow.com/questions/348 ... ollections
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»