不能访问关系方法中的父主数据中心属性



有订单、产品和价格三种模式

每个订单有许多产品,每个产品有一个价格这取决于订单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_idvalue字段。

我用$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
}

相关内容

  • 没有找到相关文章

最新更新