laravel - Laravel 调用未定义的方法 Query\Builder
问题描述
我有属于商店模型的产品模型。商店可以是活跃的,也可以是活跃的,所以我只需要从活跃的商店获取产品。所以我添加了这个方法
public function isActiveShop(){
return $this->where($this->shop->status,'active');
}
从我的控制器
$prodcuts = Product::where('id',$rawArray)->isActiveShop()->get();
我得到这个错误
“调用未定义的方法 Illuminate\Database\Query\Builder::isActiveShop()”
解决方案
您必须使用范围和whereHas()
:
public function scopeIsActiveShop($query) {
return $query->whereHas('shop', function($query) {
$query->where('status', 'active');
});
}
推荐阅读
- ios - 如何在通过控制器移动时隐藏 UINavigationBar?
- ruby-on-rails - 我应该验证类型列吗?(导轨,STI)
- excel - 在动态范围内的特定值之前无法对代码进行颜色编码
- javascript - 我如何强制执行函数等到 nodejs 中的 foreach 代码完成?
- java - 为什么我得到 java.io.NotSerializableException: Investment.Date 尽管实现了 Serializable?
- swiftui - 如何将这个圆角矩形绿色轮廓进一步向下移动
- go - 如何在golang的可选字符串参数中输入值?
- node.js - 安装 npm 包后 Node.js 找不到模块 './index.js'
- python - Pandas Dataframe - 一个单元格内的多个值?
- python - PermissionError-任务计划程序