我正在使用Laravel,作为我的部署例程的一部分,我有命令
RUN php artisan migrate
因为我正在制作中,所以我得到了错误
在生产中应用,命令取消!
修复很简单:RUN php rankbot/artisan migrate --force但我觉得这不是正确的方法吗?确保数据库架构始终是最新的最佳方法是什么?
我是Laravel的新手,我正在教自己如何从登录表进行身份验证.我已经迁移并创建了表格.现在,我正在尝试将数据播种到登录表中,但命令提示符不断给我错误,这说明Fatal Error, class login not found我不知道我错过了什么.所以任何人都可以帮助我.这是我的代码,是的,我正在使用Laravel 4.3
<?php
class loginTableSeeder extends Seeder
{
public function run()
{
DB::table('login')->delete();
login::create(array(
'username' => 'sanju',
'password' => Hash::make('sanju')
));
}
}
?>
Run Code Online (Sandbox Code Playgroud) 我的外键与它自己的表有关.这是为了生成具有层次结构的帖子.
现在当我尝试删除数据库中的列时,它给了我这个错误:
1553 - Cannot drop index 'post_field_properties_parent_id_index': needed in a foreign key constraint
Run Code Online (Sandbox Code Playgroud)
这是代码:
public function down()
{
Schema::table( "post_field_properties", function( $table )
{
$table->dropForeign('parent_id');
$table->dropColumn('parent_id');
} );
}
Run Code Online (Sandbox Code Playgroud)
我似乎能够做到的唯一方法是转到phpmyadmin并删除外键本身.然后放下列.
我有一个包含Artisan命令的包.我通过我的服务提供商向Artisan注册了这些命令,如下所示:
/**
* Register the application services.
*
* @return void
*/
public function register()
{
// Register Amazon Artisan commands
$this->commands([
'App\Marketplace\Amazon\Console\PostProductData',
'App\Marketplace\Amazon\Console\PostProductImages',
'App\Marketplace\Amazon\Console\PostProductInventory',
'App\Marketplace\Amazon\Console\PostProductPricing',
]);
}
Run Code Online (Sandbox Code Playgroud)
但是,这些命令需要安排为每天运行.
我知道在app/Console/Kernel.php中有一种schedule()方法可以注册命令及其频率,但是如何在我的包的服务提供者中安排命令呢?
我想知道是否有一种简单的方法来覆盖Laravel框架核心中的单件服务集?
例如,我正在尝试使用以下提供程序重写app:name命令服务'':
use Hexavel\Console\AppNameCommand;
use Illuminate\Console\Events\ArtisanStarting;
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Support\ServiceProvider;
class NameCommandProvider extends ServiceProvider
{
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(Dispatcher $events)
{
$events->listen(ArtisanStarting::class, function ($event) {
$event->artisan->resolve('command.app.name');
}, -1);
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->singleton('command.app.name', function ($app) {
return new AppNameCommand($app['composer'], $app['files']);
});
}
}
Run Code Online (Sandbox Code Playgroud)
我100%一切都在工作,因为无论我把服务提供商放在什么顺序(上面或下面的ConsoleSupportServiceProvider),它仍会加载原始的AppNameCommand而不是我自定义的一个.
我已经有了一个解决方案,但如果可能的话,了解未来单身人士服务的行为会很好吗?(这是使用Laravel 5.2,如果这有任何区别.)
我从GitHub Link跟踪了zizac/entrust安装教程并遇到了错误:
类名必须是一个有效的对象或在VAR的字符串/ WWW/HTML/laravel_test /供应商/ zizaco /委托/ SRC /命令/ MigrationCommand.php上线86
MigrationCommand.php文件网址:链接
Outut:
php artisan entrust:migration
Tables: roles, role_user, permissions, permission_role
A migration that creates 'roles', 'role_user', 'permissions', 'permission_role' tables will be created in database/migrations directory
Proceed with the migration creation? [Yes|no] (yes/no) [yes]: yes
Creating migration...
PHP Fatal error: Class name must be a valid object or a string in /var/www/html/laravel_test/vendor/zizaco/entrust/src/commands/MigrationCommand.php on line 86
Run Code Online (Sandbox Code Playgroud)
命令:php artisan vendor:发布成功.
文件:config/entrust.php存在.
我没有改变config/auth.php文件的任何选项 - auth.php.怎么解决?
我Redis用来缓存Laravel 5.2中的查询/路由.
我有3个环境在同一个Web服务器上运行,即"生产","暂存"和"开发".
对于每个环境,我设置了不同的缓存prefix值,以允许我将缓存链接到不同的环境.
在config/cache.php文件中我改变了行
'prefix' => 'laravel',
Run Code Online (Sandbox Code Playgroud)
至
'prefix' => ENV('CACHE_PREFIX', 'laravel'),
Run Code Online (Sandbox Code Playgroud)
然后在我的.env文件中,我为每个环境添加了这样的前缀
对于开发
CACHE_PREFIX="LaravelDev"
Run Code Online (Sandbox Code Playgroud)
用于分期
CACHE_PREFIX="LaravelStaging"
Run Code Online (Sandbox Code Playgroud)
用于生产
CACHE_PREFIX="LaravelProduction"
Run Code Online (Sandbox Code Playgroud)
我知道我可以像这样从命令行清除缓存
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
但上面的代码将清除所有环境的缓存.
我只想清除"LaravelDev"的缓存而只留下"LaravelStaging"和"LaravelProduction"
如何清除特定环境的缓存?
我有一个带有此签名的命令
order:check {--order}
Run Code Online (Sandbox Code Playgroud)
并执行此:
php artisan order:check --order 7
Run Code Online (Sandbox Code Playgroud)
由于某种原因导致此异常
[RuntimeException]
Too many arguments, expected arguments "command".
Run Code Online (Sandbox Code Playgroud)
为什么?我希望这个命令既可以作为php artisan order:check可选订单ID 执行,也可以使用可选订单ID执行php artisan order:check --order X
我正在尝试与Laravel文档中提供的相同的示例:
$users = App\User::all();
$this->output->progressStart(count($users));
foreach ($users as $user) {
print "$user->name\n";
$this->output->progressAdvance();
}
$this->output->progressFinish();
Run Code Online (Sandbox Code Playgroud)
这很好用.我想自定义进度条(见这个),但$this->output->setMessage('xpto');给出:
PHP Fatal error: Call to undefined method Illuminate\Console\OutputStyle::setFormat()
Run Code Online (Sandbox Code Playgroud) 我已经开始学习Laravel了.到目前为止,一切都运作良好.我正在按照本教程进行操作,并且我第7集陷入了困境.
问题是我不能再开始工匠了.我试图安装修补匠,我可能已经更新了工匠,所以我最终没有工匠和修补匠.我使用的是Linux Ubuntu 12.04 LTS.我已经通过命令行安装了所有内容.之后我试着跑:
php artisan --version
出现以下问题:
[ErrorException]
App\Providers\EventServiceProvider :: boot()的声明应与Illuminate\Foundation\Support\Providers\EventServiceProvider :: boot
()兼容
这是我的文件的app/Providers/EventServiceProvider.php样子:
<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\SomeEvent' => [
'App\Listeners\EventListener',
],
];
/**
* Register any other events for your application.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public …Run Code Online (Sandbox Code Playgroud)