Laravel 5.2 独立临时脚本创建及Artisan命令不显示问题求助
在Laravel 5.2中创建独立临时脚本
当然可以!完全不用依赖php artisan make:console生成那些需要提交版本控制的文件,咱们直接写一个能调用Laravel所有组件的独立脚本就行,我来帮你解决遇到的两个问题:
一、正确的独立脚本写法
你之前的脚本报错,是因为只加载了基础文件,但没有完成Laravel应用的初始化流程——数据库连接、容器服务这些都没启动,所以Eloquent模型找不到数据库连接。试试下面这个完整的脚本:
<?php // 加载Composer自动加载器 require __DIR__.'/../vendor/autoload.php'; // 实例化Laravel应用实例 $app = require __DIR__.'/../bootstrap/app.php'; // 引导应用,初始化核心服务(包括数据库连接、配置加载等) $app->make('Illuminate\Contracts\Console\Kernel')->bootstrap(); // 现在就可以正常使用Laravel的各类组件了 echo "hello world\n"; // 调用Eloquent模型 $user = App\User::where('id', 5)->first(); var_dump($user); // 也可以直接用DB门面 $dbRes = DB::table('users')->where('id', 5)->first(); var_dump($dbRes); echo "end!\n";
把这个脚本放在项目根目录(比如命名为temp-script.php),然后用php temp-script.php执行就行。核心是调用bootstrap()方法,它会帮你完成Laravel应用启动的关键步骤,让所有服务都能正常工作。
二、关于make:console生成命令不显示的问题
你用php artisan make:console MyTempTest生成命令后,在php artisan list里看不到,是因为Laravel 5.2需要手动把新命令注册到app/Console/Kernel.php的$commands数组中:
打开app/Console/Kernel.php,找到protected $commands,添加上你的命令类:
protected $commands = [ // 已有的其他命令... App\Console\Commands\MyTempTest::class, ];
保存后再运行php artisan list就能看到你的自定义命令了。不过正如你所说,这种方式需要修改内核文件并提交版本控制,对于临时测试功能来说确实有点冗余,还是用独立脚本的方式更轻便。
内容的提问来源于stack exchange,提问作者justadev
相关产品推荐
相关产品推荐

