Невозможно установить связь в has-one-through - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь наладить отношения с помощью has-one-through.

Таблицы:

packages
    -guest_detail_id

guest_details
    -client_id

clients
    -id

в Package.php

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class Packages extends Model {
  /**
   * Get the client.
   */
  public function client() {
      return $this->hasOneThrough(---what will be params---);
  }
}

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

В вашем вопросе я обнаружил, что в одном пакете есть один клиент. который не может реализовать через прямое отношение. это может быть сделано через hasOneThrough() корабль связи.

hasOneThrough() связь может быть достигнута через промежуточную таблицу, здесь ваш guest_details. таким образом, отношение становится One package has one GuestDetails and one GuestDetails has one client, hence one package has one Client.

 public function client() {
    return $this->hasOneThrough(Client::class, GuestDetails::class, 'client_id', 'id');
 }
0 голосов
/ 09 апреля 2019

Вы в основном ищете отношения BelongsToThrough, поэтому вы должны поменять местами внешние и локальные ключи:

public function client() {
    return $this->hasOneThrough(
        Client::class, GuestDetails::class,
        'id', 'id',
        'guest_detail_id', 'client_id'
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...