首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在laravel 5中运行工匠命令

在laravel 5中运行工匠命令
EN

Stack Overflow用户
提问于 2016-05-15 08:45:02
回答 5查看 92.1K关注 0票数 49

我有这样的控制器

代码语言:javascript
复制
 public function store(Request $request)
{
   Artisan::call("php artisan infyom:scaffold {$request['name']} --fieldsFile=public/Product.json");
}

告诉我错误

在"php artisan infyom“命名空间中没有定义任何命令。

当我在CMD中运行此命令时,它正确地工作。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-05-15 08:51:47

您需要删除php artisan部件并将参数放入数组中以使其工作:

代码语言:javascript
复制
public function store(Request $request)
{
   Artisan::call("infyom:scaffold", ['name' => $request['name'], '--fieldsFile' => 'public/Product.json']);
}

https://laravel.com/docs/5.2/artisan#calling-commands-via-code

票数 75
EN

Stack Overflow用户

发布于 2019-10-24 13:19:30

如果您有简单的工作要做,您可以从路由文件。例如,您希望清除缓存。在终端中,将是php手工缓存:清除路由文件中的

代码语言:javascript
复制
Route::get('clear_cache', function () {

    \Artisan::call('cache:clear');

    dd("Cache is cleared");

});

要在浏览器上运行此命令,只需转到您的项目路由和clear_cache。示例:

代码语言:javascript
复制
http://project_route/clear_cache
票数 21
EN

Stack Overflow用户

发布于 2021-06-06 18:29:23

除了在另一个命令中,我不太确定我能想出一个很好的理由这样做。但是如果您真的想从控制器(或模型等)调用Laravel命令那么您可以使用Artisan::call()

代码语言:javascript
复制
Artisan::call('email:send', [
        'user' => 1, '--queue' => 'default'
]);

一个有趣的特性是Artisan::queue(),它将在后台处理命令(由队列工作人员处理),直到我在Googled上搜索这一特性才得到正确的语法:

代码语言:javascript
复制
Route::get('/foo', function () {
    Artisan::queue('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);
    //
});

如果要从另一个命令中调用命令,则不必使用Artisan::call方法--只需执行以下操作:

代码语言:javascript
复制
public function handle()
{
    $this->call('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);
    //
}

来源:https://webdevetc.com/programming-tricks/laravel/general-laravel/how-to-run-an-artisan-command-from-a-controller/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37236206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档