2015-05-14 4 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

Вы должны быть в состоянии использовать ->with() функцию Laravel вернуть модели job, и это связано модель company:

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

тогда Вы должны быть в состоянии получить доступ все поля в job модели, как вы это обычно :

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

а также модель Общества поля:

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

Я не 100% знакомы с его использованием в Laravel 5, но любая дополнительная информация может быть найдена здесь:

Laravel Documentation - Eager Loading

+0

Ты звезда. Проводили эти годы. Раньше не встречал «С». Работает так, как я хотел сейчас. Приветствия. –

+0

Рад, что я мог бы помочь! Я сделал то же самое, что и вы, когда я начал с Laravel, но это намного лучше. –

Смежные вопросы