Laravel 具有关系的全局范围
Laravel global scope with relations
我想要一个具有全局查询范围的模型,该范围在多态一对一关系范围内。
问题是一切正常,我可以创建全局查询范围,但我没有在全局查询范围 class 中的 apply
函数中获得关系。我想用关系进行查询,而不是仅仅进行连接查询或其他查询。
有人知道这是否可行吗?
我有以下代码:
class Content extends Model {
use Environmentabletrait;
}
trait EnvironmentableTrait {
public static function bootEnvironmentableTrait() {
static::addGlobalScope(new EnvironmentScope);
}
public function environment() {
return $this->morphOne(Environment::class, 'environmentable');
}
}
class Environment extends Model {
public function environmentable() {
return $this->morphTo();
}
}
class EnvironmentScope implements ScopeInterface {
public function apply(Builder $builder, Model $model) {
$builder-> ...
}
}
和
希望我已经解释得足够清楚了;)
非常感谢
没关系,我已使用以下代码修复它:
public function apply(Builder $builder, Model $model)
{
return $builder->whereHas('environment', function ($query) {
$query->where('environment', app()->environment());
});
}
我想要一个具有全局查询范围的模型,该范围在多态一对一关系范围内。
问题是一切正常,我可以创建全局查询范围,但我没有在全局查询范围 class 中的 apply
函数中获得关系。我想用关系进行查询,而不是仅仅进行连接查询或其他查询。
有人知道这是否可行吗?
我有以下代码:
class Content extends Model {
use Environmentabletrait;
}
trait EnvironmentableTrait {
public static function bootEnvironmentableTrait() {
static::addGlobalScope(new EnvironmentScope);
}
public function environment() {
return $this->morphOne(Environment::class, 'environmentable');
}
}
class Environment extends Model {
public function environmentable() {
return $this->morphTo();
}
}
class EnvironmentScope implements ScopeInterface {
public function apply(Builder $builder, Model $model) {
$builder-> ...
}
}
和
希望我已经解释得足够清楚了;)
非常感谢
没关系,我已使用以下代码修复它:
public function apply(Builder $builder, Model $model)
{
return $builder->whereHas('environment', function ($query) {
$query->where('environment', app()->environment());
});
}