如何使用Laravel

时间:2016-08-08 14:42:34

标签: laravel

我正在使用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

6 个答案:

答案 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`应该有效。以下是您可能会发现有用的一些教程资源:

Initial database creation and seeding with Laravel 5

How to install MySQL on OSX

答案 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