Php 拉威尔关系混乱

Php 拉威尔关系混乱,php,database,laravel,reference,Php,Database,Laravel,Reference,这些天我在学习Laravel,想创建一些表格、模型和其他东西 我有公司、工作和员工。如果我理解正确,模型文件中的公共函数是字段: public function jobs() { return $this->hasMany('App\Job'); } 这是否意味着我可以为currentJob创建另一个函数,如下所示: public function currentJob() { return $this->hasOne('App\Job'); }

这些天我在学习Laravel,想创建一些表格、模型和其他东西

我有公司、工作和员工。如果我理解正确,模型文件中的公共函数是字段:

 public function jobs()
  {
    return $this->hasMany('App\Job');
  }
这是否意味着我可以为
currentJob
创建另一个函数,如下所示:

 public function currentJob()
  {
    return $this->hasOne('App\Job');
  }

此外,是否需要为每个关系添加
以下内容?例如,在用户模型中?

对于基本模型关系:

// Job Model

public function employee(){
    return $this->belongsTo('App\Employee');

}

// Employee Model
public function jobs(){
   return $this->hasMany('App\Job');
}
如果要获得当前作业,可以添加:


对于基本模型关系:

// Job Model

public function employee(){
    return $this->belongsTo('App\Employee');

}

// Employee Model
public function jobs(){
   return $this->hasMany('App\Job');
}
如果要获得当前作业,可以添加:


尝试用
英语
而不是
PHP
来查看它,这样您就能够在正确的位置使用正确的函数

所以你有三张表:公司、工作和员工

现在,在深入研究Laravel中的模型之前,您需要了解这三个表之间的关系

我假设公司和工作之间的关系是一对多的,这意味着一家公司可以有很多工作

工作和员工之间的关系是一对一的,因为一个工作可以分配给一个员工

现在根据您的项目,这些关系可能不同,但第一步是在三个表之间建立关系

现在,假设您具有与我上面解释的相同的关系,您的模型将具有以下“公共”功能:

//Company Model

//this function will returns all the jobs associated with the specific company_id
public function jobs()
{
   return $this->hasMany('App\Job');
}
========

//Job Model

//this function will return the employee associated with the specific job_id
public function employee()
{
   return $this->hasOne('App\Employee');
}

//now you can also have a function to fetch the company to which the job "belongs to", this is a reverse case which means, the jobs table has "company_id"

public function company()
{
   return $this->belongsTo('App\Company');
}
在员工模型中也可以这样做,因为每个员工都属于一个职务,这意味着有一个职务id,所以您将使用belongsTo关系:

//Employee Model

    //now you can also have a function to fetch the job to which the employee "belongs to", this is a reverse case which means, the employees table has "job_id"

    public function job()
    {
       return $this->belongsTo('App\Job');
    }
需要注意的是,hasOne和belongsTo是相互对应的函数

所以,如果作业模型对Employee使用hasOne,那么Employee将对作业使用belongsTo,因为employees表将“Job_id”作为外键。使用哪个模型很重要,基于此,您可以使用这些函数获得另一个模型的详细信息

当然,有关更多详细信息,请参阅。
我希望它有助于消除您的困惑

试着用
英语
而不是
PHP
,这样您就能够在正确的位置使用正确的函数

所以你有三张表:公司、工作和员工

现在,在深入研究Laravel中的模型之前,您需要了解这三个表之间的关系

我假设公司和工作之间的关系是一对多的,这意味着一家公司可以有很多工作

工作和员工之间的关系是一对一的,因为一个工作可以分配给一个员工

现在根据您的项目,这些关系可能不同,但第一步是在三个表之间建立关系

现在,假设您具有与我上面解释的相同的关系,您的模型将具有以下“公共”功能:

//Company Model

//this function will returns all the jobs associated with the specific company_id
public function jobs()
{
   return $this->hasMany('App\Job');
}
========

//Job Model

//this function will return the employee associated with the specific job_id
public function employee()
{
   return $this->hasOne('App\Employee');
}

//now you can also have a function to fetch the company to which the job "belongs to", this is a reverse case which means, the jobs table has "company_id"

public function company()
{
   return $this->belongsTo('App\Company');
}
在员工模型中也可以这样做,因为每个员工都属于一个职务,这意味着有一个职务id,所以您将使用belongsTo关系:

//Employee Model

    //now you can also have a function to fetch the job to which the employee "belongs to", this is a reverse case which means, the employees table has "job_id"

    public function job()
    {
       return $this->belongsTo('App\Job');
    }
需要注意的是,hasOne和belongsTo是相互对应的函数

所以,如果作业模型对Employee使用hasOne,那么Employee将对作业使用belongsTo,因为employees表将“Job_id”作为外键。使用哪个模型很重要,基于此,您可以使用这些函数获得另一个模型的详细信息

当然,有关更多详细信息,请参阅。
我希望这有助于澄清您的困惑

如果您想让用户反对任何工作,那么您需要在用户中添加
belongs to
关系model@merko如果您不了解数据库关系的基本原理,请查看事实上Laravel帮不了您的忙,你应该首先了解这一点。如果你想让用户反对任何作业,那么你需要将
belongs添加到用户中的
关系中model@merko如果你不了解数据库关系的基本原理,你应该先了解它。我可以有多个字段吗,像
currentJob
previousJobs
,都引用了作业模型?想想
currentJob
previousJobs
会返回什么?你想通过这件事达到什么目的?我想把现在的工作和以前的工作分开。另外,我如何使用工作模型作为参考,我不想在那里传递公司id,我尝试过,但它正在寻找公司id。没有外键,你就无法建立关系,这是基本的数据库理解。你可以在任何模型中实现你喜欢的任何功能,并实现你想要的任何功能,但这不属于拉威尔关系问题的范畴,所以请单独提问。一个问题,你要清楚地说明你的目标以及你试图实现它的目的是什么,否则人们会把你的帖子与拉维关系混淆误解我可以有多个字段,比如
currentJob
previousJobs
,两者都引用了作业模型?想想
currentJob
previousJobs
会返回什么?你想通过这件事达到什么目的?我想把现在的工作和以前的工作分开。另外,我如何使用工作模型作为参考,我不想在那里传递公司id,我尝试过,但它正在寻找公司id。没有外键,你就无法建立关系,这是基本的数据库理解。你可以在任何模型中实现你喜欢的任何功能,并实现你想要的任何功能,但这不属于拉威尔关系问题的范畴,所以请单独提问。一个问题,你清楚地陈述了你的目标以及你试图实现的目标,否则人们会将你的帖子与拉威尔关系混淆误解这个答案得到了一个很奇怪的结果,因为当功能名称为employee时,它显示从工作模型返回App\Job,所以基本上当你调用employ时