有订单、产品和价格三种模式
每个订单有许多产品,每个产品有一个价格这取决于订单的price_group_id字段。
class Order extends Model
{
public function products() {
return $this->belongsToMany(Product::class)->withPivot(['quantity']);
}
}
class Product extends Model
{
public function price() {
return $this->hasOne(Price::class)->where('price_group_id', '=', $this->pivot->pivotParent->price_group_id);
}
}
Pricemodel有id、product_id、price_group_id和value字段。
我用$this->pivot->pivotParent检索Order'sprice_group_id属性在Product模型中,它在Laravel中工作得很好,但它不适用于灯塔查询:"试图获得非对象的'pivotParent';属性。好像根本就没有pivot和pivotParent。
是否有任何方法可以获得父枢轴属性或其他方法来实现这种关系?
GraphQL模式的一部分:
type Query {
orders: [Order!]! @all
order(id: ID! @eq): Order @find
}
type Order {
id: ID!
price_group_id: ID!
}
type Product {
id: ID!
price: Price @hasOne
}
type Price {
id: ID!
value: Float!
price_group_id: ID!
}
我尝试了一些方法来解决这个问题,包括访问器而不是关系方法。pivotParent返回null,但是我获得了pivot的访问权!我可以这样得到price_group_id和相对价格:
public function getPriceAttribute() {
return $this->hasOne(Price::class)->where('price_group_id', Order::find($this->pivot->order_id)->price_group_id)->first()->value;
}
产品模式:
type Product {
id: ID!
price: Float
}