我设置了以下数据库表
+--------------+ +--------------+ +-----------------------+
| users | | clients | | user_clients |
+--------------+ +--------------+ +----------------------+
| id | | id | | usersid |
| name | | name | | clientid |
| authid | | email | +----------------------+
| (plus) | | (plus) |
+-------------+ +-------------+
我已经建立了一个关系表 [b]user_clients[/b] 与相关数据库的外键,所以 userid 链接到 users->id 并且 clientid 链接到 clients->id。
取决于用户 Authid 是多少客户端被链接:
Authid 1:用户只能有一个与之关联的客户端。
Authid 2:用户只能有一对多的客户端与之关联
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;
}