【发布时间】:2023-03-09 17:14:01
【问题描述】:
所以我尝试在我的模型上设置一个全局范围之类的东西,这样我就不必每次都去考虑一些参数。
问题是我目前有以下 Scopes 类;
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class NeedsPaymentScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*
* @param Builder $builder
* @param Model $model
* @return void
*/
public function apply(Builder $builder, Model $model)
{
if ($model->needs_payment) {
$builder->where('is_paid', '=', true);
}
}
}
我将它包含在我的模型中,如下所示:
protected static function boot()
{
parent::boot();
static::addGlobalScope(new NeedsPaymentScope());
}
现在,由于在 Scope 类中,变量 $model 总是为空,我无法执行 if-check(需要完成!)我怎样才能将这个逻辑实现到每个 get() , find(); findOrFail(), ... 方法?
【问题讨论】:
标签: php laravel eloquent scope