我有两个模特之间的关系。 用户的关系为belongsToMany与广告资源模型的关系。我这样做了。
public function inventory_items()
{
return $this->belongsToMany(
'App\Item', // joined model
'inventory', // pivot table name
'userid', // column name in pivot table
'item_id' // column name in pivot table
)->withPivot('equipped','id');
}
我目前正在获取这样的数据
$items = $user->inventory_items()->orderBy('inventory.id', 'DESC')->paginate(25);
以这种方式列出项目。
+-------+-------------------+
| name |item_id|description|
----------------------------|
| item 1| 1 | lorem... |
| item 1| 1 | lorem... |
| item 1| 1 | lorem... |
| item 2| 2 | lorem... |
| item 2| 2 | lorem... |
| item 3| 3 | lorem... |
----------------------------
如何按item_id对数据进行分组并用它显示计数?我想要这样的东西
+-----------+-------+------------+
| name |item_id|description|
--------------------------------|
|item 1 (x3)| 1 | lorem... |
|item 2 (x2)| 2 | lorem... |
|item 3 (x1)| 3 | lorem... |
----------------------------------
我尝试了
的不同变体 $items = $user->inventory_items()->orderBy('inventory.id', 'DESC')->groupBy("inventory.item_id")->paginate(25);
但它随着
回归 This is incompatible with sql_mode=only_full_group_by
我该怎么做?最好不要更改sql_mode
答案 0 :(得分:1)
我认为你必须使用查询构建器:
$items = Item::join('inventory', 'inventory.item_id', 'items.id')
->where('inventory.userid', '=', $user->id)
->select('items.id', 'items.name', \DB::raw('count(*)'))
->groupBy('items.id', 'items.name')
->get();