osb/app/Models/Scopes/SiteScope.php

29 lines
844 B
PHP
Raw Permalink Normal View History

2021-12-17 05:09:03 +00:00
<?php
namespace App\Models\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class SiteScope 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->when(
! collect($builder->getQuery()->wheres)->pluck('column')->contains(function($item) { return preg_match('/^(.*[^.]\.)?site_id/',$item); }),
function($q) use ($model)
{
2023-05-13 13:51:27 +00:00
// @todo Remove this override "?? 1" it was put in place to retry failed AccountingPaymentSync
return $q->where($model->getTable().'.site_id',config('site')->site_id ?? 1);
}
);
2021-12-17 05:09:03 +00:00
}
}