【发布时间】:2016-09-14 13:19:17
【问题描述】:
这些是我的桌子:
用户:
id username password
1 user1 ********
2 user2 ********
3 user3 ********
4 user4 ********
5 user5 ********
6 user6 ********
用户连接:
pivot_id parent_user_id child_user_id
1 1 2
2 1 3
3 3 4
4 3 5
class User extends Model
{
public function connections()
{
return $this->hasMany('App\UserConnections')->with(['parent','child']);
}
}
class UserConnection extends Model
{
public function parent()
{
$this->belongsTo('App\User','parent_user_id');
}
public function child()
{
$this->belongsTo('App\User','child_user_id');
}
}
$user = App\User::find(3);
现在当我为用户 ID 3 调用 $user->connections 时;
它应该给我UserConnections 表中的 2,3 和 4 行
说明:
在第二行,user3 的父级是 user1
在第三和第四行,user3 有两个孩子
【问题讨论】:
-
我认为,如果您更改 UserConnections 表并添加 Connection 表,它会更容易、更正确。连接表——id,类型(例如:{[1 => 'parent', 2 => 'child']})并且在UserConnection中有who,with who,什么类型的连接。
-
@Autista_z 从您的解决方案中,我将不得不为单个连接创建两行,一行用于父级,另一行用于子级,我不希望这样。
-
经过思考,我发现您的解决方案是最好的@Autista_z 感谢您的帮助。
标签: php laravel eloquent laravel-query-builder