jus*_*dev 7 php laravel laravel-5
我需要在 Laravel 中检查一些小东西,所以我只想制作一个小脚本来检查它。
我知道我可以做到
php artisan make:console ...
Run Code Online (Sandbox Code Playgroud)
但它会向 App/Console/Command 添加一个文件,我需要更新 app/Console/Kernel.php。这意味着我必须将其提交给源代码管理,这实际上是不需要的。
有没有办法拥有一个独立的Laravel 脚本,让我可以访问 Laravel 组件?
我正在使用 Laravel 5.2,(make:command 不存在,只有 make:console)
只是我尝试过的一个例子:
<?php
use App\User;
use DB;
require __DIR__.'/../vendor/autoload.php';
require __DIR__.'/..//bootstrap/app.php';
echo "hello world\n";
$res=User::where('id',5)->first();
echo "end!\n";
?>
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
PHP Fatal error: Uncaught Error: Call to a member function connection() on null in /var/www/html/dpriceit/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:3314
Stack trace:
#0 /var/www/html/dpriceit/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3280): Illuminate\Database\Eloquent\Model::resolveConnection(NULL)
#1 /var/www/html/dpriceit/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1880): Illuminate\Database\Eloquent\Model->getConnection()
#2 /var/www/html/dpriceit/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1853): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()
#3 /var/www/html/dpriceit/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1823): Illuminate\Database\Eloquent\Model->newQueryWithoutScopes()
#4 /var/www/html/dpriceit/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(3524): Illuminate\Database\Eloquent\Model->newQuery()
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个控制台命令
php artisan make:console MyTempTest
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,php artisan list我在可用命令列表中看不到它的签名。
要修复您收到的错误,请启动应用程序的内核并像这样处理响应
app\script.php
<?php
use App\User;
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
echo "hello world\n";
$res = User::find(5)->name;
var_dump($res);
echo "end!\n";
Run Code Online (Sandbox Code Playgroud)
然后从终端运行php app/script.php
结果:
$ php app/script.php
hello world
string(11) "John Doe"
end!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |