【问题标题】:Laravel 4 DB:raw() is unavailable when running outside of frameworkLaravel 4 DB:raw() 在框架外运行时不可用
【发布时间】:2013-10-07 06:58:30
【问题描述】:

我通过 composer 使用 Laravel 4 中的 [illuminate/database component][1] - 虽然它通常运行良好,但 DB 外观在这个独立版本中似乎被破坏了。这意味着我无法使用 DB::raw() 等静态函数。似乎 DB 外观甚至包含在包中,但它不适用于 ::raw()。

我正在尝试做这样的事情 -

...->orderBy(DB::raw('RAND()'))

【问题讨论】:

    标签: php database laravel laravel-4


    【解决方案1】:

    Capsule::raw() 可用,并链接到默认连接的raw()

    另外,我所做的是创建了一个类:

    /**
     * @method static raw($value)
     * @method static array select($query, $bindings = [], $useReadPdo = true)
     * ...etc.
     */
    class DB extends Manager
    {
    }
    

    这样

    1. 您可以使用 DB::raw()。
    2. IDE 代码完成工作。

    【讨论】:

      【解决方案2】:

      我找到了一个部分解决方案,但如果有人有任何更好的想法,我很想听听他们(似乎original Capsule package 实际上内置了支持,也许它在合并时丢失了,或者也许我用错了吗?)

      use Illuminate\Database\Capsule\Manager as Capsule;
      
      $connection = Capsule::connection();
      
      // You can now use $connection->raw() in place of DB::raw()
      ...->orderBy($connection->raw('RAND()'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-01
        • 2014-07-26
        • 2016-03-28
        • 2015-08-06
        • 1970-01-01
        • 2013-05-07
        • 1970-01-01
        • 2019-07-12
        相关资源
        最近更新 更多