在 laravel 中的一个 table 中获得 parents 和 children 关系的最佳方法?
Best way to get parents and children relationships within one table in laravel?
这些是我的 table:
用户:
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
table
的第 2,3 & 4 行
解释:
在第二行,user3 有一个 parent 即 user1
在第三和第四行,user3 有两个 children
这就是解决我问题的方法:
用户:
id username password
1 user1 ********
2 user2 ********
3 user3 ********
4 user4 ********
5 user5 ********
6 user6 ********
用户连接:
pivot_id parent_user_id child_user_id relation
1 1 2 child
2 2 1 parent
3 1 3 child
4 3 1 parent
5 3 4 child
6 4 3 parent
7 3 5 child
8 5 3 parent
class User extends Model
{
public function connections()
{
return $this->belongsToMany('App\Newsroom','UserConnections','parent_user_id','child_user_id')->with(['user']);
}
}
class UserConnection extends Model
{
public function user()
{
$this->belongsTo('App\User','child_user_id');
}
}
感谢@Autista_z
这些是我的 table:
用户:
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
table
解释:
在第二行,user3 有一个 parent 即 user1
在第三和第四行,user3 有两个 children
这就是解决我问题的方法:
用户:
id username password
1 user1 ********
2 user2 ********
3 user3 ********
4 user4 ********
5 user5 ********
6 user6 ********
用户连接:
pivot_id parent_user_id child_user_id relation
1 1 2 child
2 2 1 parent
3 1 3 child
4 3 1 parent
5 3 4 child
6 4 3 parent
7 3 5 child
8 5 3 parent
class User extends Model
{
public function connections()
{
return $this->belongsToMany('App\Newsroom','UserConnections','parent_user_id','child_user_id')->with(['user']);
}
}
class UserConnection extends Model
{
public function user()
{
$this->belongsTo('App\User','child_user_id');
}
}
感谢@Autista_z