如何在Laravel中使用递归关系?

时间:2019-01-11 22:49:11

标签: database laravel recursion recursive-query laravel-request

我正在使用一个用户表来存储三个不同用户的信息。我首先使用一个parent_id创建了父母,现在我想创建学生,并希望提供父母ID的引用。

我的表有一个ID,parent_id,名称,工作等。当父母被注册时,它将设置一个新的id,parent_id,名称,工作。学生注册后,将设置先前存储的新ID,名称和parent_id。

我是Laravel 5.7的新手,我在存储父记录和学生记录的语法方面遇到问题。

2 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,则希望将某个用户设为其他用户的父级。例如,一个学生将有一个父母,也是一个用户。在这种情况下,您将需要像下面这样实现用户模型:

class User extends Model
{
     public function parent(){
           return $this->belongsTo('App\User','parent_id');
     }
     public function children(){
           return $this->hasMany('App\User','parent_id');
     }
}

通过这种方式,您可以访问用户的孩子和父母。

答案 1 :(得分:0)

我同意Ali Mrj。使用Ali Mrj的风格来建立联系。

class User extends Model
{
  public function parent(){
        return $this->belongsTo('App\User','parent_id');
  }
  public function children(){
       return $this->hasMany('App\User','parent_id');
  }
}

然后使用umefarooq样式插入数据。 创建父记录,将其id作为sudent的parent_id,然后创建学生记录

您如何获得最后的ID?这取决于你的风格。 我现在正在考虑2种解决方案。.

  
      
  1. 获取所有id_parent,然后在
  2. 中使用它   
  3. 从数据库中获取最后一个id父级。
  4.   

如何获取最后一个id_parent?

$last_user = User::where('job','teacher')->orderBy('id','desc')->get()