无法建立单向关系
Unable to make relation in 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---);
}
}
在你的问题中,我发现一个包裹有一个客户。无法通过直接关系实现。
这可以通过 hasOneThrough()
关系来完成。
hasOneThrough()
关系可以通过中间table实现,这里是你的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');
}
你基本上是在寻找一个BelongsToThrough
关系,所以你必须交换外键和本地键:
public function client() {
return $this->hasOneThrough(
Client::class, GuestDetails::class,
'id', 'id',
'guest_detail_id', 'client_id'
);
}
我正在努力建立一段有来有往的关系。
表格:
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---);
}
}
在你的问题中,我发现一个包裹有一个客户。无法通过直接关系实现。
这可以通过 hasOneThrough()
关系来完成。
hasOneThrough()
关系可以通过中间table实现,这里是你的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');
}
你基本上是在寻找一个BelongsToThrough
关系,所以你必须交换外键和本地键:
public function client() {
return $this->hasOneThrough(
Client::class, GuestDetails::class,
'id', 'id',
'guest_detail_id', 'client_id'
);
}