【问题标题】:How laravel facade can use DB and DB instance at the same time?laravel 门面如何同时使用数据库和数据库实例?
【发布时间】:2018-12-23 04:39:16
【问题描述】:

我使用数据库外观。我看到它可以在 Illuminate\Database\DatabaseManager 的 DB::connection 和 Illuminate\Database\Connection 的 DB::select 中使用。

我不明白一个门面如何应用两个服务?

感谢您的提问!

【问题讨论】:

    标签: laravel laravel-facade


    【解决方案1】:

    一个 Facade 可以为不同的方法指向多个类。这可以通过魔术方法__call 来实现。

    这是DatabaseManager 类的__call 方法:

     /**
     * Dynamically pass methods to the default connection.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     */
    public function __call($method, $parameters)
    {
        return $this->connection()->$method(...$parameters);
    }
    

    DB 外观指向DatabaseManager 类,如果找不到该方法,则DatabaseManager 将调用转发到Connection 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-19
      • 2021-05-29
      • 2017-04-04
      • 2019-07-21
      • 2012-06-30
      • 2018-08-21
      • 2012-08-24
      • 2020-01-20
      相关资源
      最近更新 更多