我有一个模特
我这样称呼它:
Sight::filter(['type'=>'menu']);
并在模型中:
public function scopeFilter($query,$params)
{
return $query
->wherePublish(1)
->whereIn_special(1)
->latest()
->first();
}
当有一条或多条记录时,它会正常工作。
但是当数据库为空时我得到一个奇怪的行为:
dd(Sight::filter(['type'=>'menu']))
或
$query
->wherePublish(1)
->whereIn_special(1)
->latest()
->first();
dd($query);
我得到了这个结果:
但是
dd(
$query
->wherePublish(1)
->whereIn_special(1)
->latest()
->first();
)
我得到了Null所以它是对的!
我怎么能返回Null?我错了什么?
答案 0 :(得分:2)
您不应该在范围内调用 `=SUMIFS($B$2:$B$4,$A$2:$A$4,E2) + SUMIFS($D$2:$D$4,$C$2:$C$4,E2)`
- 您只是想通过约束来调整查询。应用first()
范围后,您应该在链中调用first()
。如果你想使用相同的语法而不是像这样链接,你最好定义一个自定义的静态方法。
filter()
另请注意,在您的示例中,您的作用域接受一个参数(并将其传递给一个参数),但它实际上并未在您的代码中使用。