天真的问题:有没有办法使用 Artisan 在 Lumen 框架中创建一个 Mailable 类,如下所示:(php artisan make:mail OrderShipped示例取自文档)。
这是composer.json
{
"name": "laravel/lumen",
"description": "The Laravel Lumen Framework.",
"keywords": ["framework", "laravel", "lumen"],
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.6.4",
"laravel/lumen-framework": "5.4.*",
"vlucas/phpdotenv": "~2.2",
"firebase/php-jwt": "^4.0",
"guzzlehttp/guzzle": "^6.3",
"illuminate/mail": "5.4",
"phanan/cascading-config": "~2.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"phpunit/phpunit": "~5.0",
"mockery/mockery": "~0.9"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/",
"database/"
]
},
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\"" …Run Code Online (Sandbox Code Playgroud) 我正在 Laravel 中制作自定义 Artisan 命令,我想传递选项。然而,我看到例如make:controller可以选择通过传入-r或 来创建资源控制器--resource。我的命令现在定义如下:
protected $signature = 'make {name} {--flag=?}';
Run Code Online (Sandbox Code Playgroud)
但是当我执行-hfor 命令帮助时,我只看到--flag一个选项。我想提供一个选项来编写-f并传入标志。
我试过这样
protected $signature = 'make {name} {-f=?} {--flag=?}';
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
我在 Laravel 中多次遇到这个错误,因为使用模型类时说这个类不存在,但它确实存在。其中之一是当我 App\Post::count()与tinker一起运行时得到了这个:
PHP 致命错误:在第 1 行的 Psy Shell 代码中找不到类“App/Post”
其中之一是当我尝试用模型为数据库播种时。这是模型内容:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Dog extends Model
{
//
}
Run Code Online (Sandbox Code Playgroud)
这是播种者:
<?php
use Illuminate\Database\Seeder;
use \App\Dog;
class DogsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Dog::query()->create(['name'=>'jack']);
}
}
Run Code Online (Sandbox Code Playgroud)
出现此错误:找不到类“App\Dog”。这适用于我创建的每个模型。
有什么解决办法吗?(Laravel -V:5.4,PHP -V:7.2,Apache 网络服务器)
[MacOS 10.14.0] 当我创建一个新项目 ( Laravel new blog) 然后在 MySQL 中创建一个表 ( create database blog) 然后使用正确的用户名、密码和数据库更新我的 .env 文件。
创建项目后,我将运行php artisan migrate
但我的终端保持为空,我可以在终端中输入。但它不会做任何事情。
我的存储/日志文件夹是空的。
我的数据库/迁移文件夹中有 2 个默认迁移文件。
php migrate list作品
会是什么?
我正在尝试设置一个表以便在 Laravel 中异步执行作业。我已经编写了作业类并且可以调度它。但是它是同步调度的。
当我尝试创建迁移时,我php artisan queue:table收到以下错误:
[Symfony\Component\Console\Exception\CommandNotFoundException]
Command "queue:table" is not defined.
Did you mean one of these?
queue:failed
queue:work
queue:restart
queue:listen
queue:retry
queue:forget
queue:flush
Run Code Online (Sandbox Code Playgroud)
我注意到我最初在配置目录中没有queue.php 文件,因此我从存储库中添加了该文件并更改'default' => env('QUEUE_DRIVER', 'sync')为'default' => env('QUEUE_DRIVER', 'database'),;
我还在我的 .env 文件中进行了QUEUE_DRIVER=sync更改。QUEUE_DRIVER=database
我是 Laravel 作业队列的新手,所以我不确定我错过了什么。如何创建迁移以利用数据库队列驱动程序?
更新:我最终只是在 postgres 数据库中创建了一个作业表,我按照Lumen 文档中描述的结构用于其余数据,并使用它来存储作业,但仍然好奇为什么该queue:table功能不可用。
Laravel 框架版本 Lumen (5.3.3) (Laravel Components 5.3.*)
长话短说,我的 Larvel 8 (Jetstream) 应用程序中有一个名为 Board 的模型。我正在尝试为该板模型生成一个工厂。
当我使用以下任一命令时:
php artisan make:factory BoardFactory
Run Code Online (Sandbox Code Playgroud)
或者
php artisan make:factory BoardFactory --model=Board
Run Code Online (Sandbox Code Playgroud)
我生成了一个看起来没有错误或问题的工厂类。但是,当我打开该类时,它包含与模型无关的内容。
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
class BoardFactory extends Factory{
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
//
];
}
}
Run Code Online (Sandbox Code Playgroud)
我已经对我的应用程序中的所有模型进行了尝试,并且这种情况仍然存在。再次没有错误表明找不到模型。该命令看似成功运行,但显然尚未为模型生成工厂。
我知道如果需要的话我可以轻松地手动编写此内容,但我想了解为什么这不起作用以及如何修复它。我越快通过测试...就越好:)
预先感谢您的任何帮助。
我正在尝试自学 Laravel 命令,以便稍后我使用它来安排它们。这是我的内核文件:
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
'App\Console\Commands\FooCommand',
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('App\Console\Commands\FooCommand')->hourly();
}
/**
* Register the Closure based commands for the application.
*
* @return void
*/
protected …Run Code Online (Sandbox Code Playgroud) 因此,当您运行php artisan migrate并失败时,它会在终端中显示错误。
有没有办法查看哪个迁移文件导致错误?我想获取该迁移的文件名。
我创建了一个命令来对一个非常大的数据库表进行一些数据操作,因为它需要足够的时间来完成,我利用了进度条的好处加上在控制台上回显了一些信息。
为了自动化操作并减少人为错误,我想使用以编程方式执行命令的样式在 Laravel 迁移中调用我的命令并且它可以工作,但问题是它不会从控制台内的相应命令打印任何输出
我想我应该将当前使用的输出缓冲区传递artisan:migrate给Artisan::call函数以使其工作,但没有运气在迁移中访问它
有什么建议?
有没有办法完全禁止运行 artisan 命令?
例如,如果我想禁用php artisan migrate:fresh运行,我应该去哪里删除/禁用命令?