Как я могу считать элементы с тем же внешним ключом и при этом получать доступ к данным отношений?
Я использую PHP - Laravel - Eloquent и имеет три таблицы: User
, User_items
и items
.
User_items
имеет три столбца: id
, user_id
и item_id
:
ID | user_id | item_id
0 | 5 | 2
1 | 5 | 3
2 | 5 | 8
3 | 5 | 3
Допустим, items
также имеет три столбца: id
, name
и value
:
ID | Name | Value
2 | Sword | 500
3 | Pickaxe | 250
8 | Shovel | 700
Я хочу считать элементы с одинаковымиuser_id
и вернуть данные элемента из таблицы items
.Чтобы получить все элементы пользователя, я использую следующее соотношение:
public function user_items()
{
return $this->hasMany(User_items::class, 'user_id', 'id');
}
Далее я хочу получить имена этих элементов и сосчитать их.Я не просто хочу:
Sword
Pickaxe
Shovel
Pickaxe
Я хочу каким-то образом получить такие результаты:
2 Pickaxe
1 Sword
1 Shovel
Мои user_items
отношения, чтобы получить данные об элементевыглядит так:
public function item_data()
{
return $this->hasOne(Items::class, 'id', 'item_id');
}
Вот как я получаю повторяемый результат:
return response()->json(["DATA" => $user->user_items->load('item_data')->toArray()], 201);
Пример вывода
"DATA":[
{
"id":1,
"item_id":5,
"created_at":"2019-06-04 08:44:08",
"updated_at":"2019-06-04 08:44:08",
"item_data":{
"id":5,
"name":"Sword",
"rarity":"good",
"value":500,
"image":"image.jpg",
"color":"#3160ed",
"created_at":null,
"updated_at":null
}
},
}
Я хочу добавить строку вроде "count": 5
к вышеприведенному выводу.