2015-12-21 4 views
1

Я потратил весь свой день, но не могу понять hasManyThrough отношения.Laravel: hasManyThrough relationship

У меня есть эти отношения:

# get related users 
public function users() 
{ 
    return $this->hasManyThrough(User::class, FuneralHomeUser::class, 'user_id', 'id'); 
} 

Это приводит меня этот запрос:

SELECT `users`.*, `funeral_homes_users`.`user_id` 
FROM `users` 
INNER JOIN `funeral_homes_users` ON `funeral_homes_users`.`id` = `users`.`id` 
WHERE `funeral_homes_users`.`user_id` = '4' 

Все хорошо для ON funeral_homes_users.id = users.id кроме должно быть ON funeral_homes_users.user_id = users.id. Так что единственное, что я пытаюсь получить, это вместо id, он должен иметь user_id для funeral_homes_users.id (например, это должно быть funeral_homes_users.user_id), но я не могу понять это.

Вот таблицы для справки:

// funeral_homes 
Schema::create('funeral_homes', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('name', 255); 
    $table->timestamps(); 
}); 

// funeral_homes_users 
Schema::create('funeral_homes_users', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->integer('funeral_home_id')->unsigned(); 
    $table->integer('user_id')->unsigned(); 
    $table->timestamps(); 
}); 

// users 
Schema::create('users', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->string('email')->unique(); 
    $table->string('password', 60); 
    $table->rememberToken(); 
    $table->string('first_name'); 
    $table->string('last_name'); 
    $table->timestamps(); 
}); 

Любая помощь будет принята с благодарностью. Благодаря !!!

+2

что у вас есть hasManyThrough и не многие-ко-многим отношения Вы? – naneri

+0

@naneri: Не уверен, я новичок в этом, я разместил структуру таблицы, если это так, это очень приветствуется с помощью. Спасибо – dev02

+0

Я подозреваю, что это hasManyThrough, потому что 'funeral_homes' не имеет отношения напрямую к пользователям. – dev02

ответ

1

Если я правильно понимаю, ваш случай:

USER имеет много FUNERAL_HOME

FUNERAL_HOME принадлежит ко многим USER

, если это правильно, ваши методы соотношение должно возвращать что-то вроде этого:

User.php

public function FuneralHomes() 
{ 
    return $this->belongsToMany(FuneralHome::class, 'funeral_homes_users'); 
} 

FuneralHome.php

public function Users() 
{ 
    return $this->belongsToMany(User::class, 'funeral_homes_users'); 
} 

Примите взгляд на doku

+0

ты герой !!!, спасибо за твою помощь, очень благодарен, ты спас меня от траты в другой день :) – dev02

+0

рад, что может помочь :) –

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