我有一个模型
我这样称呼它:
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 所以它是对的!
我怎样才能返回空?我怎么了?
您不应该first()
在范围内调用- 您只是为了通过约束来调整查询。您应该first()
在应用filter()
范围后调用您的链。如果您想使用相同的语法而不是像这样链接,您最好定义一个自定义静态方法。
public static function filter($params)
{
return self::wherePublish(1)
->whereIn_special(1)
->latest()
->first();
]
另请注意,在您的示例中,您的范围接受一个参数(并传递一个参数),但实际上并未在您的代码中使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句