Laravel 4 DB:在框架外运行时,raw()不可用

时间:2013-10-01 07:47:56

标签: php database laravel laravel-4

我正在使用Laravel 4中的[照明/数据库组件] [1]到作曲家 - 虽然它通常运行良好,但在这个独立版本中,数据库外观似乎已被打破。这意味着我无法使用DB :: raw()等静态函数。看起来数据库外观甚至包含在包中,但它不适用于:: raw()。

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

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

2 个答案:

答案 0 :(得分:4)

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代码完成工作。

答案 1 :(得分:0)

我找到了一个部分解决方案,但如果有人有任何更好的想法,我很想听到它们(似乎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()'))