次のdbテーブルをセットアップしました
+--------------+ +--------------+ +-----------------------+
| users | | clients | | user_clients |
+--------------+ +--------------+ +----------------------+
| id | | id | | usersid |
| name | | name | | clientid |
| authid | | email | +----------------------+
| (plus) | | (plus) |
+-------------+ +-------------+
関連するデータベースへの外部キーを持つ関係テーブル [b]user_clients[/b] を設定したので、userid は users->id にリンクされ、clientid は client->id にリンクされます。
リンクされているクライアントの数は、Users Authid に依存します。
Authid 1: ユーザーは、関連付けられたクライアントを 1 つだけ持つことができます。
Authid 2: ユーザーは 1 つから複数のクライアントのみを関連付けることができます
Authid 3: ユーザーはすべてのクライアントにアクセスできます。
したがって、私は現在laravelのこの関係側に慣れていないので、詳細を取得するために多くのクエリを実行します。
私は次のようなことをしました:
$userClient =UsersClients::select('clientid')->where('userid','=',$userid)->get();
次に、おそらく結果をループして、各クライアントの詳細を取得し、ページに出力します。
foreach($userClient as $i ->$cleint){
echo '<div>' .$cleint->name . '</div>';
........
}
これは古い方法であり、より適切に処理できますか??
- - - - - - - - 編集 - - - - - - - -
私はそれを次のようにソートすることができました:
ユーザー モデル:
public function clients() {
return $this->hasMany('UsersClients','userid');
}
ユーザーコントローラー
$selectedUserClients = User::find(24)->clients;
クライアント ID の 1 と 2 のように、前の結果と同じ結果が得られますが、実際のクライアント データベースからクライアントの詳細を取得する方法は、基本的に次のような簡単な方法があります。
foreach ($selectedUserClients as $key => $client) {
$clientInfo = Client::select('id','clientname')->where('id','=',$client->clientid)->get();
echo $clientInfo[0]->clientname;
}