Database 如何在Laravel中创建数据库模式(表)?

Database 如何在Laravel中创建数据库模式(表)?,database,laravel,Database,Laravel,我是拉威尔的新手。我正在尝试在拉威尔创建数据库。我在控制台中尝试了: Schema::创建 但它给出了“未找到命令”。我应该安装什么或如何创建数据库?如果要使用artisan创建模型,请按以下方式操作: php artisan make:model ModelName 首先,您必须在config文件夹的database.php中设置数据库名称、用户名和密码 'connections' => [ 'sqlite' => [ 'driver'

我是拉威尔的新手。我正在尝试在拉威尔创建数据库。我在控制台中尝试了:

Schema::创建

但它给出了“未找到命令”。我应该安装什么或如何创建数据库?

如果要使用artisan创建模型,请按以下方式操作:

php artisan make:model ModelName

首先,您必须在config文件夹的database.php中设置数据库名称、用户名和密码

'connections' => [

        'sqlite' => [
            'driver'   => 'sqlite',
            'database' => storage_path('database.sqlite'),
            'prefix'   => '',
        ],

        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'news'),
            'username'  => env('DB_USERNAME', 'root'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

        'pgsql' => [
            'driver'   => 'pgsql',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
        ],

        'sqlsrv' => [
            'driver'   => 'sqlsrv',
            'host'     => env('DB_HOST', 'localhost'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset'  => 'utf8',
            'prefix'   => '',
        ],

    ],
如果您使用的是xampp,那么右键单击项目文件夹并单击此处的use composer

然后运行以下命令

 php artisan migrate:install
php artisan
您可以创建类似于

php artisan make:migration create_users_table
迁移结构

迁移类包含两个方法:up和down。up方法用于向数据库中添加新表、列或索引,而down方法只需反转up方法执行的操作

在这两种方法中,您可以使用Laravel schema builder以表达方式创建和修改表。要了解Schema builder上可用的所有方法,请查看其文档。例如,让我们看一个创建flights表的迁移示例:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('flights');
    }
}
如需了解更多信息,请阅读以下文档

Laravel中的数据库设置
  • 在根目录上打开
    .env
    文件
示例:-

  DB_CONNECTION=mysql
  DB_HOST=127.0.0.1
  DB_PORT=3306
  DB_DATABASE=dbname
  DB_USERNAME=root
  DB_PASSWORD=password
现在运行命令

我的工作示例:

创建新artisan命令:

php artisan make:command mysql
App\Console\Commands\mysql.php的内容:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class mysql extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'mysql:createdb {name?}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create a new mysql database schema based on the database config file';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $schemaName = $this->argument('name') ?: config("database.connections.mysql.database");
        $charset = config("database.connections.mysql.charset",'utf8mb4');
        $collation = config("database.connections.mysql.collation",'utf8mb4_unicode_ci');

        config(["database.connections.mysql.database" => null]);

        $query = "CREATE DATABASE IF NOT EXISTS $schemaName CHARACTER SET $charset COLLATE $collation;";

        DB::statement($query);

        config(["database.connections.mysql.database" => $schemaName]);

    }
}
然后运行:(schema_name可选)


我刚刚创建了一个有趣的Laravel包,其中包含一些方便的artisan命令集,如创建或删除数据库、转储数据库或从.sql转储加载,或者查看模型中存在哪些字段(和字段类型)


查看:

您应该详细阅读,了解如何使用迁移和在数据库中创建表。我从这里了解到--它的编写目的是使用:
Schema::create
创建数据库,但它给我的命令是找不到。
Schema::create
将在您的数据库中创建表,而不是实际的数据库(同时,您还可以在查看Laravel 4.2的文档时查看.Laravel迁移并不是真正用来创建数据库,只是用来创建数据库内部的结构。您可以使用
DB::statement
来创建数据库,但由于架构生成器旨在与数据库无关,因此它不是以那种方式构建的。您应该指定您使用的数据库(MySQL、PostgreSQL等)因此,我们可以提供如何创建数据库的指导。是的,我看到了这些教程,并观看了它们的迁移。说明了如何创建模型和表,但如何创建数据库?:)这取决于您创建数据库的意思,您想创建实际的数据库(mysql或任何其他数据库)?是的,mysql数据库,然后我将创建表您是否安装了任何Apache服务器(例如XAMPP)您应该转到phpmyadmin并在那里创建数据库,请注意以下内容以供进一步参考:是的,您可以这样做,请参见此处:“”,但由于您是初学者,我认为这样做会更容易,请注意,如果您打算通过CLI执行此操作,你必须为你的连接找到正确的端口。这个问题是关于创建数据库的,但在这个回答中没有提到。答案只反映了如何创建表,而不是数据库。我不知道为什么这是正确的答案。问题是如何在数据库中创建一个数据库而不是一个表结构。非常好!感谢分享。我遇到了一个问题,迁移运行在已经创建的数据库中失败。在清除缓存和重新安装migrate之前,我丢弃了它并使用它创建了它,这非常有效。谢谢我运行“php artisan make:command mysql”,它返回“Console命令已经存在!”我运行“php artisan mysql:createdb”,它返回“mysql”命名空间中没有定义任何命令”
namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class mysql extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'mysql:createdb {name?}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create a new mysql database schema based on the database config file';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $schemaName = $this->argument('name') ?: config("database.connections.mysql.database");
        $charset = config("database.connections.mysql.charset",'utf8mb4');
        $collation = config("database.connections.mysql.collation",'utf8mb4_unicode_ci');

        config(["database.connections.mysql.database" => null]);

        $query = "CREATE DATABASE IF NOT EXISTS $schemaName CHARACTER SET $charset COLLATE $collation;";

        DB::statement($query);

        config(["database.connections.mysql.database" => $schemaName]);

    }
}
php artisan mysql:createdb schema_name