Dingo API,使用数据库查询生成器
Dingo API, use Database Query Builder
有谁知道如何将 Eloquent 查询生成器与 Dingo API 一起使用?
开箱即用 Eloquent,效果很好 :
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection([ ... ]);
$capsule->setAsGlobal(); // Make this Capsule instance available globally via static methods
$capsule->bootEloquent(); // Setup the Eloquent ORM
然后在我的模型中,我可以使用查询生成器:
use Illuminate\Database\Capsule\Manager as Capsule;
Capsule::table('users')->where(...)->select(Capsule::raw('AVG(rating) AS avg_rating'))->first()->avg_rating;
我知道我可以使用 Eloquent 来获得相同的结果,但它只适用于简单查询:
User::where(..)->selectRaw(...)->first()->avg_rating;
现在使用 Dingo API,当我想使用查询生成器时,我收到了这条错误消息:
Fatal error: Call to a member function connection() on null
我想这与我在 app/bootstrap.php[=30 中从未调用过的 setAsGlobal 方法有关=] 文件。我只有这个:
...
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
// $app->withFacades();
$app->withEloquent();
...
我想是因为我正在使用需要 illuminate/database 的流明:https://github.com/laravel/lumen-framework/blob/5.2/composer.json
但是稳定模式下的Dingo API不需要illuminate/database。莫非是这个原因?必需的软件包不是自动 "sub" 必需的?
我明白了。这只是关于 Facades。
取消注释 app/bootstrap.php 中的行以使用 Facades :
$app->withFacades();
现在,我可以使用 Facade 'DB' 和 Query Builder...
有谁知道如何将 Eloquent 查询生成器与 Dingo API 一起使用?
开箱即用 Eloquent,效果很好 :
use Illuminate\Database\Capsule\Manager as Capsule;
$capsule = new Capsule;
$capsule->addConnection([ ... ]);
$capsule->setAsGlobal(); // Make this Capsule instance available globally via static methods
$capsule->bootEloquent(); // Setup the Eloquent ORM
然后在我的模型中,我可以使用查询生成器:
use Illuminate\Database\Capsule\Manager as Capsule;
Capsule::table('users')->where(...)->select(Capsule::raw('AVG(rating) AS avg_rating'))->first()->avg_rating;
我知道我可以使用 Eloquent 来获得相同的结果,但它只适用于简单查询:
User::where(..)->selectRaw(...)->first()->avg_rating;
现在使用 Dingo API,当我想使用查询生成器时,我收到了这条错误消息:
Fatal error: Call to a member function connection() on null
我想这与我在 app/bootstrap.php[=30 中从未调用过的 setAsGlobal 方法有关=] 文件。我只有这个:
...
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
// $app->withFacades();
$app->withEloquent();
...
我想是因为我正在使用需要 illuminate/database 的流明:https://github.com/laravel/lumen-framework/blob/5.2/composer.json
但是稳定模式下的Dingo API不需要illuminate/database。莫非是这个原因?必需的软件包不是自动 "sub" 必需的?
我明白了。这只是关于 Facades。
取消注释 app/bootstrap.php 中的行以使用 Facades :
$app->withFacades();
现在,我可以使用 Facade 'DB' 和 Query Builder...