2015-05-14 148 views
1

我有两个模型,公司和工作。一个公司可以有很多工作。Laravel雄辩一对多

工作型号:

class Job extends \Eloquent { 

    public function company() { 
     return $this->belongsTo('Company'); 
    } 
} 

公司型号:

class Company extends \Eloquent { 

    public function jobs() { 
     return $this->hasMany('Job'); 
    } 
} 

如果我这样做,我想$job对象中都有我想如果以相同的方式工作&公司对象我做了一个SQL连接,例如:

SELECT * FROM `jobs` JOIN company ON `company_id` = company.id WHERE jobs.`id` = 156; 

相反,如果我这样做

$job = Job::find($id); 
var_dump($job); 
exit; 

$job只有这个工作。

如果我这样做:

$job = Job::find($id)->company; 
var_dump($job); 
exit; 

我只得到了公司。

我如何获得$job等同于SQL连接?

回答

0

你应该能够使用Laravel的->with()函数返回模型job和它相关的模型company

$job = Job::with("company")->find($id); 

然后,您应该能够访问所有领域中job模型就像你通常会:

$job->field_1; 
$job->field_2; 
... 

,也是公司的模式的字段:

$job->company->field_1; 
$job->company->field_2; 
... 

我不熟悉其在Laravel 5使用率100%,但任何进一步的信息可以在这里找到:

Laravel Documentation - Eager Loading

+0

你是个明星。花了这么多年。以前没有遇到过“With”。正如我现在想要的那样工作。干杯。 –

+0

很高兴能帮到你!当我开始使用Laravel时,我做了和你一样的事情,但这样做好得多。 –