【问题标题】:Unable to make relation in has-one-through无法在单程中建立关系
【发布时间】:2019-04-09 11:00:49
【问题描述】:

我正在尝试建立一种一次性的关系。

表格:

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---);
  }
}

【问题讨论】:

    标签: php laravel eloquent has-one-through


    【解决方案1】:

    在您的问题中,我发现一个包裹有一个客户。不能通过直接关系实现。 这可以通过hasOneThrough() 关系来完成。

    hasOneThrough()关系可以通过一个中间表来实现,这里是yourguest_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');
     }
    

    【讨论】:

    • 能否请您添加一些信息以便 OP 能够理解?谢谢。
    【解决方案2】:

    您基本上是在寻找BelongsToThrough 关系,因此您必须交换外键和本地键:

    public function client() {
        return $this->hasOneThrough(
            Client::class, GuestDetails::class,
            'id', 'id',
            'guest_detail_id', 'client_id'
        );
    }
    

    【讨论】:

    • 你是对的,我实际上正在寻找在 laravel 5.8 中添加的 BelongsToThrough 方法和 hasOneThrough 方法,所以我很困惑如何做到这一点。
    • Laravel 没有原生的BelongsToThrough 关系,但是有一个包(我是维护者):github.com/staudenmeir/belongs-to-through
    猜你喜欢
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多