[李景山php]每天laravel-20160926|DatabasePresenceVerifier.php

<?php

namespace Illuminate\Validation;

use Illuminate\Support\Str;
use Illuminate\Database\ConnectionResolverInterface;
// ok,just namespace
class DatabasePresenceVerifier implements PresenceVerifierInterface
{// like Database Presence Verifier can implements Presence Verifier Interface
    /**
     * The database connection instance.
     *
     * @var \Illuminate\Database\ConnectionResolverInterface
     */
    protected $db;// database connection instance.

    /**
     * The database connection to use.
     *
     * @var string
     */
    protected $connection = null;// connection to use as what

    /**
     * Create a new database presence verifier.
     *
     * @param  \Illuminate\Database\ConnectionResolverInterface  $db
     * @return void
     */
    public function __construct(ConnectionResolverInterface $db)
    {
        $this->db = $db;//Connection Resolver Interface $db is a  instance about this, just a class
    }// Create a new database presence verifier

    /**
     * Count the number of objects in a collection having the given value.
     *
     * @param  string  $collection
     * @param  string  $column
     * @param  string  $value
     * @param  int     $excludeId
     * @param  string  $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);// get the query sql
       // first get Table
       // and get the where condition

        if (! is_null($excludeId) && $excludeId != ‘NULL‘) {
            $query->where($idColumn ?: ‘id‘, ‘<>‘, $excludeId);
        }// and set the ID filed field range

        foreach ($extra as $key => $extraValue) {
            $this->addWhere($query, $key, $extraValue);//
        }// and use this way to add other condition.

        return $query->count();// get result
    }// get Count about collection having the given value

    /**
     * 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);//first get query

        foreach ($extra as $key => $extraValue) {
            $this->addWhere($query, $key, $extraValue);
        }// second ,get this extra condition

        return $query->count();//get result
    }//Count the number of objects in a collection with the given values.

    /**
     * Add a "where" clause to the given query.
     *
     * @param  \Illuminate\Database\Query\Builder  $query
     * @param  string  $key
     * @param  string  $extraValue
     * @return void
     */
    protected function addWhere($query, $key, $extraValue)
    {
        if ($extraValue === ‘NULL‘) {// if NULL
            $query->whereNull($key);
        } elseif ($extraValue === ‘NOT_NULL‘) {// if NOT NULL
            $query->whereNotNull($key);
        } elseif (Str::startsWith($extraValue, ‘!‘)) {// if it start with !
            $query->where($key, ‘!=‘, mb_substr($extraValue, 1)); //like != not equal
        } else {
            $query->where($key, $extraValue);// the normal condition
        }
    }// add a where clause[looks like list ] to the given query

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

    /**
     * Set the connection to be used.
     *
     * @param  string  $connection
     * @return void
     */
    public function setConnection($connection)
    {
        $this->connection = $connection;
    }// set connection
}
时间: 2024-10-05 20:16:20

[李景山php]每天laravel-20160926|DatabasePresenceVerifier.php的相关文章

[李景山php]每天laravel-20160920|Writer-2

    //2016-07-20     /**      * Register a file log handler.      *      * @param  string  $path      * @param  string  $level      * @return void      */     public function useFiles($path, $level = 'debug')     {         $this->monolog->pushHandle

[李景山php]每天laravel-20161021|Request.php-2

/**  * Determine if the current request URL and query string matches a pattern.  *  * @param  mixed  string  * @return bool  */ public function fullUrlIs() {// check string like URL     $url = $this->fullUrl();     foreach (func_get_args() as $patter

[李景山php]每天laravel-20161103|CompilerEngine.php-2

    /**      * Handle a view exception.      *      * @param  \Exception  $e      * @param  int  $obLevel      * @return void      *      * @throws $e      */     protected function handleViewException(Exception $e, $obLevel)     {         $e = new E

[李景山php]每天laravel-20161104|Engine.php

<?php namespace Illuminate\View\Engines; abstract class Engine {     /**      * The view that was last to be rendered.      *      * @var string      */     protected $lastRendered;//The view that was last to be rendered.     /**      * Get the last 

[李景山php]每天laravel-20161105|EngineInterface.php

<?php namespace Illuminate\View\Engines; interface EngineInterface {     /**      * Get the evaluated contents of the view.      *      * @param  string  $path      * @param  array   $data      * @return string      */     public function get($path, 

[李景山php]每天laravel-20161106|EngineResolver.php

<?php namespace Illuminate\View\Engines; use Closure; use InvalidArgumentException; class EngineResolver {// engineResolver     /**      * The array of engine resolvers.      *      * @var array      */     protected $resolvers = [];// The array of e

[李景山php]每天laravel-20161107|PhpEngine.php

<?php namespace Illuminate\View\Engines; use Exception; use Throwable; use Symfony\Component\Debug\Exception\FatalThrowableError; class PhpEngine implements EngineInterface {// PhpEngine implements EngineInterface     /**      * Get the evaluated con

[李景山php]每天laravel-20161010|Validator.php-10

   /**     * Validate the guessed extension of a file upload is in a set of file extensions.     *     * @param  string  $attribute     * @param  mixed  $value     * @param  array   $parameters     * @return bool     */    protected function validate

[李景山php]每天TP5-20170204|thinkphp5-Response.php

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 http://thinkphp.cn All