Я ищу способ агрегирования набора eloquent
пар пользователей в Laravel. [[user][partner]]
У меня есть следующая структура таблицы пользователей
[id] [name] [partner_id]
Пользовательская сущность имеет соответствующие partner_ids или null (если партнер не существует)
| id | name | partner_id |
+----+---------------+------------+
| 1 | John Doe | 3 |
| 2 | J Random User | NULL |
| 3 | Jane Doe | 1 |
| .. | ... | ... |
Ожидаемый результат:
[
[
{ "id": 1, "name": "John Doe", "partner_id": 3 },
{ "id": 3, "name": "Jane Doe", "partner_id": 1 },
],
[
{ "id": 2, "name": "J Random User", "partner_id": null },
]
]
Я не понимаю, как я получаю пользователей один раз и собираю $users
коллекцию в пары в моем контроллере.
<?php
namespace App\Http\Controllers;
use App\User;
class PairController extends Controller
{
public function index()
{
$users = User::all();
$collection = collect();
foreach ($users as $user) {
$myself = $user->id;
$partner = $user->partner_id;
// ... ???
}
return $collection->unique();
}
}
Может ли кто-нибудь мне помочь с решением? Я застрял в моем мозгу.