我正在使用Laravel 5.2。我已经设置了我的第一次迁移,我想运行它们。从video tutorial它没有解释如何创建一个mysql数据库。我知道我可以在phpmyadmin中手动执行此操作但是有Laravel方法吗?
这将安装迁移表:
php artisan migrate:install
是否有类似的命令可以创建数据库?
我认为这个过程应该是:
php artisan DB:install (or similar command)
安装迁移表:
php artisan migrate:install
运行迁移:
php artisan migrate
并回滚迁移:
php artisan migrate:rollback
答案 0 :(得分:9)
没有提供开箱即用的东西,但您可以自己制作一个可以为您执行此操作的命令:
php artisan make:console CreateDatabase
// Note, in 5.3 this is make:command
然后在app/Console/Commands
中,您会找到CreateDatabase.php
。打开那个傻逼,让我们做一些改变:
protected $name = "make:database";
然后在你的文件下面我们需要一个新功能:
protected function getArguments()
{
return [
['name', InputArgument::REQUIRED, 'The name of the database'],
];
}
然后我们将创建另一个名为fire()
的函数,该函数将在调用该命令时被调用:
public function fire()
{
DB::getConnection()->statement('CREATE DATABASE :schema', ['schema' => $this->argument('name')]);
}
现在你可以这样做:
php artisan make:database newdb
现在,您将根据连接配置为您创建newdb
数据库。
修改忘记了最重要的部分 - 您需要告诉app\Console\Commands\Kernel.php
您的新命令,请务必将其添加到protected $commands[]
数组。
protected $commands = [
///...,
App\Console\Commands\CreateDatabase::class
];
答案 1 :(得分:5)
如果您使用不同的mysql连接,这个答案可能会有用。我在laravel 5.5中编写代码
步骤:1 创建命令
php artisan make:command CreateDatabaseCommand
步骤:2 在app / Console / Kernel.php中注册命令
protected $commands = [
CreateDatabaseCommand::class
];
步骤:3 在CreateDatabaseCommand.php文件中写入逻辑
protected $signature = 'make:database {dbname} {connection?}';
public function handle()
{
try{
$dbname = $this->argument('dbname');
$connection = $this->hasArgument('connection') && $this->argument('connection') ? $this->argument('connection'): DB::connection()->getPDO()->getAttribute(PDO::ATTR_DRIVER_NAME);
$hasDb = DB::connection($connection)->select("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = "."'".$dbname."'");
if(empty($hasDb)) {
DB::connection($connection)->select('CREATE DATABASE '. $dbname);
$this->info("Database '$dbname' created for '$connection' connection");
}
else {
$this->info("Database $dbname already exists for $connection connection");
}
}
catch (\Exception $e){
$this->error($e->getMessage());
}
}
这就是全部。现在运行你的命令
php artisan make:database {your-database-name} {your-connection-name}:
注意:: 只有在想要在默认的mysql连接的任何不同连接中创建数据库时才应使用第二个参数,否则命令将自动采用默认的数据库连接
希望这会有所帮助:)
答案 2 :(得分:1)
如果您不打算使用Vagrant盒子或虚拟机进行本地开发,那么您将不得不安装所选的数据库驱动程序,然后创建一个新的数据库。
要从命令行运行MySQL:
xmlfile <- xmlTreeParse(gsub("","",readLines(f)), asText=TRUE)
然后$ mysql -uroot -p
mysql> create database yourDatabaseName;
并更新您的数据库信用。
cp .env.example .env
首次安装驱动程序时,您已经为数据库设置了用户名和密码。在此之后,你可能需要DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=yourDatabaseName
DB_USERNAME=root
DB_PASSWORD=root
和/或&#39; php artisan config:clear php artisan key:generate
php artisan migrate`应该有效。以下是您可能会发现有用的一些教程资源:
答案 3 :(得分:1)
维卡什的回应奏效了。 (在Laravel 5.8中)
基于Vikash的响应: How to create a mysql db with Laravel
我创建了以下命令,该命令将使用您分配的排序规则创建一个MySQL数据库。 我已将其上传到此GitHub repository
我希望它可以帮助其他开发人员。
答案 4 :(得分:0)
你必须先制作你的模态并制作其迁移表才能建立数据库。 你应该使用:php artisan make:model -m命令来制作模型和迁移表。之后在任何texteditor中打开您的迁移表以添加数据库表中的列,然后使用此命令进行迁移:
php artisan migrate
答案 5 :(得分:0)
您应该创建数据库,并为其设置连接参数。然后,Laravel将访问数据库并运行迁移(制作表格)和播种机。
您可以在此处找到purge
的参数:https://laravel.com/docs/5.2/migrations#running-migrations