标签: laravel-artisan

如何通过交互调用工匠控制台命令

我目前正在 Laravel 5.1 项目中创建一个 php artisan 控制台命令,并想从我的控制台命令中调用另一个控制台命令。我想调用的这个第三方命令不接受任何选项或参数,而是通过交互式问题接收其输入。

我知道我可以调用带有选项和参数的命令,如下所示:

$this->call('command:name', ['argument' => 'foo', '--option' => 'bar']);

我也知道我可以从命令行调用交互式命令而无需像这样的交互:

php artisan 命令:名称 --no-interaction


但是我怎样才能在我的命令中回答这些交互式问题呢?

我想做类似下面的事情(伪代码)。

$this->call('command:name', [
    'argument' => 'foo', 
    '--option' => 'bar'
], function($console) {
    $console->writeln('Yes'); //answer an interactive question 
    $console-writeln('No'); //answer an interactive question 
    $console->writeln(''); //skip answering an interactive question 
} );
Run Code Online (Sandbox Code Playgroud)

当然,以上不起作用,因为$this->call($command, $arguments)不接受第三个回调参数。

从控制台命令调用控制台命令时如何回答交互式问题?

php console command laravel laravel-artisan

7
推荐指数
1
解决办法
5631
查看次数

php artisan serve --host 0.0.0.0 无法从同一网络上的移动设备访问

我试图通过共享网络共享我的 Laravel 项目,使用;

php artisan serve --host 192.168.X.XXX --port 8000

这有效并且不会产生任何错误,但我仍然无法在连接到同一 wifi 网络的其他机器上访问我的应用程序,使用我的 Mac 的 IP 地址进行连接。

我尝试了不同的端口并更改了我的 Mac 的 IP 地址以尝试修复它,但到目前为止没有任何效果。

知道是什么导致了这个问题吗?任何建议将不胜感激,谢谢!

php port host laravel laravel-artisan

7
推荐指数
1
解决办法
1万
查看次数

Laravel 迁移 DELIMITER

我正在尝试通过工匠迁移创建 MySQL 触发器。

DB::unprepared('
    DELIMITER $$
    CREATE TRIGGER cascade_courseAffinity_after_facultyAffinity
    AFTER DELETE ON faculty_affinities
    FOR EACH ROW
    BEGIN
        DELETE ca
        FROM course_affinities AS ca
        JOIN courses AS course1 ON ca.course1_id = course1.id 
        JOIN courses AS course2 ON ca.course2_id = course2.id    
        WHERE (course1.faculty_id = OLD.faculty1_id OR course1.faculty_id = OLD.faculty2_id)
        AND (course2.faculty_id = OLD.faculty1_id OR course2.faculty_id = OLD.faculty2_id);
        END
    $$
');
Run Code Online (Sandbox Code Playgroud)

然而,当我运行迁移时,我收到错误

SQLSTATE[]: Syntax error... near DELIMITER $$ at line 1
Run Code Online (Sandbox Code Playgroud)

帮助他人?

编辑1:这是我在 MySQL 上使用的迁移文件

创建与教师 (faculty_id) 具有一对多关系的“课程”表。

Schema::create('courses', function (Blueprint $table) { …
Run Code Online (Sandbox Code Playgroud)

mysql migration database-migration laravel-5 laravel-artisan

6
推荐指数
1
解决办法
2804
查看次数

在 cPanel 中设置 Laravel cron 作业

我有以下功能:

protected function schedule(Schedule $schedule)
{
    $schedule->command('email:users')->everyMinute();
}
Run Code Online (Sandbox Code Playgroud)

当我运行命令时

artisan schedule:run 
Run Code Online (Sandbox Code Playgroud)

它会发送一封电子邮件,但是当我将以下命令作为 cron 作业添加到 cpanel 时,它不会发送任何电子邮件。Cpanel 假设在运行 cron 作业时通过电子邮件向我发送通知,但我没有收到一封电子邮件。

php /home/rain/artisan schedule:run 1>> /dev/null 2>&1

我哪里做错了?

此外,当我运行命令时,artisan schedule:run它只运行一次。我很好奇,->everyMinute();如果不是每分钟都运行一次,为什么我必须添加?如果我想每周发送一次,我可以设置 cron 作业。->weekly();如果 cron 作业每周发送它,为什么我必须编写添加函数?

cron schedule cpanel laravel laravel-artisan

6
推荐指数
3
解决办法
2万
查看次数

任何 php artisan 命令都会冻结终端

我见过很多人在尝试运行任何 php artisan 命令时遇到错误,但我什么也没得到 - 我尝试运行的任何命令都会保持运行/冻结状态,直到我按 ctrl + c 退出为止。关于调试这个有什么技巧吗?我很茫然...

php command-line-interface laravel laravel-5.4 laravel-artisan

6
推荐指数
1
解决办法
1471
查看次数

将迁移标记为在 Laravel 中运行

我的迁移失败了,所以我只是在 MySQL Workbench 中手动运行了一个查询。

是否有工匠命令将迁移标记为完成?因此,当我运行未来的迁移时,它会跳过我知道不需要运行的迁移。

我可以使用此命令列出它们及其状态,并查看哪些已运行,哪些未运行:

php artisan migrate:status 
Run Code Online (Sandbox Code Playgroud)

如果没有命令,我可能可以手动将条目插入到数据库迁移表中。(但目前没有迁移:P)

我想我也可以...删除迁移。

laravel artisan-migrate laravel-artisan

6
推荐指数
3
解决办法
3319
查看次数

Laravel php artisan“类请求不存在”

我正在与 Laravel 合作,

突然,当我尝试php artisan serve在命令提示符下运行时,

它显示错误消息:

In Container.php line 729: Class request does not exist
Run Code Online (Sandbox Code Playgroud)

我查看了所有控制器、模型和其他我能想到的松散请求引用的文件,但什么也没找到。

我该如何调试这个?

php request laravel laravel-artisan

6
推荐指数
2
解决办法
1万
查看次数

Laravel: SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法

安装新的 Laravel 应用程序 5.7 并尝试迁移后,出现此错误:

Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] 服务器请求客户端未知的身份验证方法(SQL:select * from information_schema.tables where table_schema = xxx_db and table_name = migrations)

在 C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664 660| // 如果尝试运行查询时发生异常,我们将格式化错误 661| // 包含与 SQL 的绑定的消息,这将使此异常成为 662| // 对开发人员更有帮助,而不仅仅是数据库的错误。663| 捕获(异常 $e){

664| throw new QueryException(665| $query, $this->prepareBindings($bindings), $e 666|); 667| 第668话

异常跟踪:

1 PDOException::("PDO::__construct(): 服务器请求了客户端未知的身份验证方法 [caching_sha2_password]") C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\连接器.php:70

2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=xxx_db", "root", "**********", []) C:\xampp\htdocs \xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70

请使用参数 -v 查看更多详细信息。

php mysql migrate laravel laravel-artisan

6
推荐指数
5
解决办法
2万
查看次数

如何更改 Laravel 6 中的应用程序名称(空格)

在以前的版本中,您可以使用 artisan 命令

php artisan app:name NewName
Run Code Online (Sandbox Code Playgroud)

使用更改应用程序命名空间(默认为 App)。工匠命令现在似乎消失了。不再支持更改命名空间吗?

php namespaces laravel-artisan laravel-6

6
推荐指数
2
解决办法
5257
查看次数

“php artisan migrate”显示“没有要迁移的内容”

我是 Laravel 的新手。我正在开发 laravel 版本 6。我已经创建了迁移。它第一次运行得很好,但是如果我更改迁移文件中的某些内容然后运行php artisan migrate它会显示nothing to migrate. 我php artisan migrate --path也尝试过,但它不起作用。为了使其工作,我必须删除迁移文件并重新创建它。我不想用php artisan migrate:fresh

我应该怎么做才能只运行一个已更改的迁移文件?

php laravel artisan-migrate laravel-artisan laravel-6

6
推荐指数
1
解决办法
2万
查看次数