BaseModel.php 1.48 KB
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

/**
 * Class BaseModel
 * @package App\Models
 */
class BaseModel extends Model
{
    use HasFactory;

    /**
     * @return string
     */
    public static function table()
    {
        return (new static())->getTable();
    }

    /**
     * @param Builder $builder
     * @param array $params
     * @return Builder
     */
    public function scopeCustom(Builder $builder, array $params)
    {
        foreach ($params as $key => $value) {
            $builder = $builder->when(filled($params[$key]), function ($query) use ($key, $value){
                $query->where($key, $value);
            });
        }
        return $builder;
    }

    /**
     * @param Builder $builder
     * @param array $params
     * @return Builder|\Illuminate\Support\Traits\Conditionable|mixed
     */
    public function scopeLike(Builder $builder, array $params)
    {
        foreach ($params as $key => $value) {
            $builder = $builder->when(filled($params[$key]), function ($query) use ($key, $value){
                $query->where($key, 'like', "%{$value}%");
            });
        }
        return $builder;
    }

    /**
     * @param Builder $builder
     * @return Builder
     */
    public function scopeIdentify(Builder $builder)
    {
        return $builder->whereIn('stakeholder_id', request()->get('stakeholder_ids'));
    }

}