2015-05-14 178 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時,我做了和你一樣的事情,但這樣做好得多。 –