Glu*_*ear 1 php laravel eloquent
Laravel 5.7。我有一个模型Cat,带有一个property visible和一个用于检查可见性的范围:
class Cat extends Model
{
public function scopeVisible($query)
{
return $query->where('visible', true);
}
public function fleas()
{
return $this->hasMany('App\Flea');
}
}
Run Code Online (Sandbox Code Playgroud)
我有第二个模型Flea:
class Flea extends Model
{
public function cat()
{
return $this->belongsTo('App\Cat');
}
}
Run Code Online (Sandbox Code Playgroud)
我想向添加一个类似的可见性范围Flea,这样我就可以做类似的操作$fleas = Flea::visible()->get(),它只会返回属于可见猫的跳蚤。但是我不确定如何Cat在上的scope方法中引用父对象Flea。
编辑:我尝试cat()在上的scopeVisible方法中访问关系Flea,但我从Laravel收到此错误:
Eloquent构建器实例上不存在属性[cat]。
用途whereHas():
class Flea extends Model
{
public function cat()
{
return $this->belongsTo('App\Cat');
}
public function scopeVisible($query)
{
return $query->whereHas('cat', function($query) {
$query->visible();
});
}
}
Run Code Online (Sandbox Code Playgroud)
然后做:
Flea::visible()->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |