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