Laravel의 전역 범위, 쉬운 방법.
실제로 전역 범위가 필요한 시나리오를 가정해 보겠습니다. 주문 테이블이 있고 무료 주문과 유료 주문이 있습니다.
먼저 범위를 만들고 호출할 수 있습니다
App\Scopes\OrderScope.php
.<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
use Auth;
class ComplaintScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function apply(Builder $builder, Model $model)
{
// builder is the query
if (Auth::user()->isClient()) {
$builder->where('user_id', Auth::id());
} elseif (Auth::user()->isCommercial()) {
$builder->whereHas('user', function (Builder $query) {
$query->where('commercial_id', Auth::user()->id);
});
}
}
}
그런 다음 모델에서 그렇게 사용합니다.
use App\Scopes\ComplaintScope;
//add that function to the model
protected static function booted()
{
static::addGlobalScope(new ComplaintScope);
}
Reference
이 문제에 관하여(Laravel의 전역 범위, 쉬운 방법.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/baronsindo/global-scope-in-laravel-the-easy-way-7jf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)