我正在编写一个应用程序,其中有两个模型,即AngencyProfile
和Ad
。我已经创建了两种模型的多态关系。
ads table
的结构如下:
我需要为AngencyProfile
编写查询范围,以便根据条件检索代理机构资料,比方说where remaining_budget >= cpc
。
我怎样才能做到这一点?或者有可能吗?
我现在写的关系和查询范围如下:
public function ads() {
return $this->morphMany(Ad::class, 'advertisable');
}
public function scopeAdvertisable($query)
{
return $query->ads()->where('remaining_budget', '>=', 'cpc)->get();
}
这是一个例外。
调用未定义的方法Illuminate \ Database \ Query \ Builder :: ads()
我们将非常感谢您的帮助。
答案 0 :(得分:3)
尝试更改以下功能
public function scopeAdvertisable($query)
{
return $query->ads()->where('remaining_budget', '>=', 'cpc)->get();
}
要
public function scopeAdvertisable($query)
{
return $query->with(['ads'=> function($query){
$query->where('remaining_budget', '>=', 'cpc);
}])
->get();
}
public function scopeAdvertisable($query)
{
return $query->whereHas('ads',function($query){
$query->where('remaining_budget', '>=', 'cpc);
})
->get();
}