2015-10-29 4 views
1

У меня есть следующие настройки таблиц в моем приложении:Laravel возврат объекта отношения с данными сводной таблицы

  • user
  • job_title
  • job_title_user (поворотный стол)

У меня есть настройки модель отношений для названий вакансий в модели user, например:

/** 
* The job titles that belong to the user. 
* 
* @return Object 
*/ 
public function jobTitles() 
{ 
    return $this->belongsToMany('App\Models\User\JobTitle'); 
} 

Я хочу, чтобы иметь возможность выбирать несколько строк из таблицы пользователей, в то время как соединение в поле job_title_id из таблицы job_title_user.

Так что в основном я ищу, чтобы сделать выбор в таблице пользователя (выбрав несколько пользователей), но также выберите, какие должности заданий назначил им.

Другая проблема заключается в том, что я хочу, чтобы отправить полученные данные в формате JSON, например:

return response()->json([ 
     'rows' => $rows 
    ]); 

Как я могу добиться этого?

Спасибо!

ответ

0

Из-за отношений BelongsToMany, которые вы определили, Laravel автоматически запросит таблицу job_title_user.

Другими словами, просто использовать

@foreach ($user->jobTitles as $jobTitle) 
    {{ $jobTitle->id }} 
@endforeach 

в шаблоне, чтобы получить доступ к нему. См. Также Laravel docs о сводных таблицах.

+0

Следует отметить, что если вы планируете делать это на разных пользователях, чтобы избежать проблемы с n + 1, используйте метод 'with()' для исходного запроса. То есть 'User :: with ('jobTitles') -> all()' (возможно, это 'User :: with ('job_titles') -> all()', я не помню ..) – Dencker

+0

Выдает ошибку : 'Undefined property: Illuminate \ Database \ Eloquent \ Collection :: $ jobTitles' – V4n1ll4

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