hasManyの関係によってLaravelの雄弁なグループ

アンドレアス・ハンター:

私が持っているusersuser_positionsテーブル。

Userモデル

public function positions()
{
    return $this->hasMany(UserPosition::class);
}

データ例:

ユーザー:

----------------
| id | name    |
----------------
| 1  | Alex    |
| 2  | Nick    |
| 3  | John    |
| 4  | Liam    |
| 5  | Noah    |
| 6  | William |
| 7  | James   |
| 8  | Oliver  |
| 9  | Benjamin|
| 10 | Elijah  |
| 11 | Lucas   |
----------------

ユーザー体位

------------------------
|  position  | user_id |
------------------------
| Developer  |   1     |
| Designer   |   2     |
| Teacher    |   1     |
| Singer     |   3     |
| Architect  |   3     |
| Accountant |   4     | 
| Baker      |   2     |
| Actress    |   7     |
| Chef       |   11    |
| Butcher    |   10    |
| Carpenter  |   8     |
| Developer  |   9     |       
| Accountant |   11    |       
| Butcher    |   8     |  
| Singer     |   10    |  
| Carpenter  |   7     |   
| Carpenter  |   1     |   
------------------------

この場合、私はグループ位置の名前でユーザーとは、この結果のように得ることができる方法:

[
    Developer => [1, 9],
    Designer => [2],
    Teacher => [1],
    Singer => [3, 10],
    Architect => [3],
    Accountant => [4, 11],
    Baker => [2],
    Actress => [7],
    Chef => [11],
    Butcher => [10, 8],
    Carpenter => [8, 7, 1]
]
ダリルE.クラーク:

あなたは、多対多の関係を探しています。あなたが通り、中央のピボットテーブルを使用する場合はLaravelのドキュメント簡単に検索を逆にすることができます。

今、あなたは、ユーザーが多くのポジションを持っていますが、位置は、あなたの二次テーブルに繰り返されて、あなたは、簡単に特定の位置にあるすべてのユーザーを取得するには何の構造を持っていません。

あなたは中間テーブルを使用する場合は、ユーザーを持つことができる位置と位置があなたのグループ化を与え、また、ポジション名を持つデータの繰り返しを減らし、ユーザーを持っています。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=33647&siteId=1