Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifier.php
Строк: 167
<?php

namespace IlluminateValidation;

use 
Closure;
use 
IlluminateDatabaseConnectionResolverInterface;

class 
DatabasePresenceVerifier implements DatabasePresenceVerifierInterface
{
    
/**
     * The database connection instance.
     *
     * @var IlluminateDatabaseConnectionResolverInterface
     */
    
protected $db;

    
/**
     * The database connection to use.
     *
     * @var string
     */
    
protected $connection;

    
/**
     * Create a new database presence verifier.
     *
     * @param  IlluminateDatabaseConnectionResolverInterface  $db
     * @return void
     */
    
public function __construct(ConnectionResolverInterface $db)
    {
        
$this->db $db;
    }

    
/**
     * Count the number of objects in a collection having the given value.
     *
     * @param  string  $collection
     * @param  string  $column
     * @param  string  $value
     * @param  int|null  $excludeId
     * @param  string|null  $idColumn
     * @param  array  $extra
     * @return int
     */
    
public function getCount($collection$column$value$excludeId null$idColumn null, array $extra = [])
    {
        
$query $this->table($collection)->where($column'='$value);

        if (! 
is_null($excludeId) && $excludeId !== 'NULL') {
            
$query->where($idColumn ?: 'id''<>'$excludeId);
        }

        return 
$this->addConditions($query$extra)->count();
    }

    
/**
     * Count the number of objects in a collection with the given values.
     *
     * @param  string  $collection
     * @param  string  $column
     * @param  array  $values
     * @param  array  $extra
     * @return int
     */
    
public function getMultiCount($collection$column, array $values, array $extra = [])
    {
        
$query $this->table($collection)->whereIn($column$values);

        return 
$this->addConditions($query$extra)->distinct()->count($column);
    }

    
/**
     * Add the given conditions to the query.
     *
     * @param  IlluminateDatabaseQueryBuilder  $query
     * @param  array  $conditions
     * @return IlluminateDatabaseQueryBuilder
     */
    
protected function addConditions($query$conditions)
    {
        foreach (
$conditions as $key => $value) {
            if (
$value instanceof Closure) {
                
$query->where(function ($query) use ($value) {
                    
$value($query);
                });
            } else {
                
$this->addWhere($query$key$value);
            }
        }

        return 
$query;
    }

    
/**
     * Add a "where" clause to the given query.
     *
     * @param  IlluminateDatabaseQueryBuilder  $query
     * @param  string  $key
     * @param  string  $extraValue
     * @return void
     */
    
protected function addWhere($query$key$extraValue)
    {
        if (
$extraValue === 'NULL') {
            
$query->whereNull($key);
        } elseif (
$extraValue === 'NOT_NULL') {
            
$query->whereNotNull($key);
        } elseif (
str_starts_with($extraValue'!')) {
            
$query->where($key'!='mb_substr($extraValue1));
        } else {
            
$query->where($key$extraValue);
        }
    }

    
/**
     * Get a query builder for the given table.
     *
     * @param  string  $table
     * @return IlluminateDatabaseQueryBuilder
     */
    
protected function table($table)
    {
        return 
$this->db->connection($this->connection)->table($table)->useWritePdo();
    }

    
/**
     * Set the connection to be used.
     *
     * @param  string  $connection
     * @return void
     */
    
public function setConnection($connection)
    {
        
$this->connection $connection;
    }
}
Онлайн: 0
Реклама