具体来说,我正在使用sqlite,所以每次打开连接时我都需要在数据库上运行命令PRAGMA foreign_keys=1
。我如何告诉laravel这样做?在某个地方是否有设置我可以指定在每个连接开始时运行的命令?
答案 0 :(得分:2)
Laravel在连接和第一次查询执行之间不会触发任何事件,但您可以在查询上挂钩侦听器,它将在第一次查询运行后立即触发:
DB::listen(function()
{
// Run your command here
});
但是如果你需要确保你想要它运行,也许最好的方法是在每个请求上触发它,你可以通过在app/start/global.php
中执行它来实现:
DB::statement(DB::raw('PRAGMA foreign_keys=1'));
答案 1 :(得分:1)
在Laravel 4.2中,您的app目录中有一个名为filters.php的文件,它有一个默认过滤器,可在每次启动应用程序之前触发。这意味着它将在任何控制器或路径之前运行。
如果你不再在app / filters.php中拥有它,你可以添加它,它看起来像这样:
App::before(function($request)
{
//
});