如何解决Laravel 使用范围过滤关系
我有以下型号:
Order
和 OrderState
。
在 Order
模型中,我定义了关系:
public function fullState() : ?BelongsTo
{
return $this->belongsTo(OrderState::class,'order_state_id','id');
}
我想要做的是获取具有特定 OrderState 的所有订单。我在 Order
类中创建了作用域方法
public function scopeNotCancelled(Builder $query) : Builder
return $query->with('fullState')->whereHas('fullState',function ($q) {
$q->notCancelled();
});
}
public function scopeNotPostponed(Builder $query) : Builder
return $query->with('fullState')->whereHas('fullState',function ($q) {
$q->notPostponed();
}]);
}
在我的 OrderState
类中,我有以下带作用域的方法:
public function scopeNotCancelled(Builder $query) : Builder
{
return $query->where('key','<>',self::CANCELLED);
}
public function scopeNotPostponed(Builder $query) : Builder
{
return $query->where('key',self::POSTPONED);
}
我的查询如下所示:
$salesOrders = SalesOrder::notCancelled()
->notPostponed()
->get()
sqlSTATE[42S22]: Column not found: 1054 UnkNown column 'Order.order_state_id' in 'where clause' (sql: select * from `Order` where exists (select * from `OrderState` where `Order`.`order_state_id` = `OrderState`.`id` and `key` <> CANCELLED) and exists (select * from `OrderState` where `Order`.`order_state_id` = `OrderState`.`id` and `key` <> POSTPONED) and `order_state_id` <> 0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。