Я потратил весь свой день, но не могу понять 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();
});
Любая помощь будет принята с благодарностью. Благодаря !!!
что у вас есть hasManyThrough и не многие-ко-многим отношения Вы? – naneri
@naneri: Не уверен, я новичок в этом, я разместил структуру таблицы, если это так, это очень приветствуется с помощью. Спасибо – dev02
Я подозреваю, что это hasManyThrough, потому что 'funeral_homes' не имеет отношения напрямую к пользователям. – dev02