У меня есть приложение, которое обрабатывает информацию о пользователе, и одна из частей данных, которую мы собираем, - это то, в какой школе они посещают. У нас есть объект User
, объект School
и объект UserSchool
.Использование отношений в Laravel Eloquent с таблицей моста
Это user_schools стол:
user_id (int),school_id (int)
Со следующими записями например:
100, 20
200, 500
200, 10
300, 10
Я пытаюсь получить все школы для текущего пользователя (скажем пользователя 200) , Это мой UserSchool объект:
class UserSchool extends Model
{
var $table = 'user_schools';
function user() {
return $this->belongsTo('User');
}
function school() {
return$this->belongsTo('School');
}
}
В User
я следующие соотношения определены:
public function schools()
{
return $this->hasManyThrough('School', 'UserSchool');
}
public function userSchools()
{
return $this->hasMany('UserSchool');
}
Когда я var_dump($user->schools)
я не получаю никаких результатов, хотя я знаю, что это должно быть возвращающих несколько School
s. Что я делаю не так? Я уверен, что этого, должно быть, задавали раньше, но я не знаю, каков фактический термин для этого промежуточного типа отношений (таблица таблицы поворота?).
Редактировать: В любом случае, большинство примеров, на которые я смотрел, не сработало. Я также попытался:
public function schools()
{
return $this->hasManyThrough('School', 'UserSchool', 'school_id');
}
Работал отлично, однако для PHP 5.4 пришлось изменить School :: class на «School». Спасибо. Я бы подумал, что нужно иметь отношения hasManyThrough, поэтому спасибо, что указали мне правильный путь. – StackOverflowed