【问题标题】: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
{
}
这样
- 您可以使用 DB::raw()。
- 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()'))