如何在PHP Laravel Lumen中建立与数据库的连接?

时间:2016-08-17 05:53:23

标签: php database laravel lumen lumen-5.2

我正在尝试通过IntegrationReportGenerator运行基于流明的查询。我不知道如何正确调用正确的数据库名称。

编辑:我之所以收到错误的原因是因为我项目中 localhost 文件中的数据库名称的名称。我的.env文件中的行DB_DATABASE=mydbschemaname需要有我的数据库名称,但是如何找到它?我无法在任何地方找到它。

database error

我的代码如下,.env位于app-> Http:

routes.php
app中的

$app->get('/records', 'UserController@index'); > Http->控制器:

UserController.php
app中的

namespace App\Http\Controllers; use App\User; use App\Http\Controllers\Controller; use Illuminate\Http\Request; class UserController extends Controller { public function index() { $users = User::all(); return response()->json($users); } } - > Http:

User.php
app-> data->迁移中的

namespace App; use Illuminate\Auth\Authenticatable; use Laravel\Lumen\Auth\Authorizable; use Illuminate\Database\Eloquent\Model; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; class User extends Model implements AuthenticatableContract, AuthorizableContract { use Authenticatable, Authorizable; protected $fillable = [ 'name', 'email', ]; protected $hidden = [ 'password', ]; }

[date]_create_users_table.php

当然,我的use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name', 200); $table->string('email', 200)->unique(); $table->string('password', 200); $table->timestamps(); }); DB::table('users')->insert( ['id' => 1, 'name' => 'example', 'email' => 'example@example.com', 'password' => 'thisisthepassword', 'updated_at' => '2015-10-15 01:23:45', 'created_at' => '2015-10-15 01:23:45'] ); } public function down() { Schema::drop('users'); } } 位于app-> vendor-> laravel-> lumen-framework-> config:

database.php

最后,这是我的<?php return [ /* |-------------------------------------------------------------------------- | PDO Fetch Style |-------------------------------------------------------------------------- | | By default, database results will be returned as instances of the PHP | stdClass object; however, you may desire to retrieve records in an | array format for simplicity. Here you can tweak the fetch style. | */ 'fetch' => PDO::FETCH_CLASS, /* |-------------------------------------------------------------------------- | Default Database Connection Name |-------------------------------------------------------------------------- | | Here you may specify which of the database connections below you wish | to use as your default connection for all database work. Of course | you may use many connections at once using the Database library. | */ 'default' => env('DB_CONNECTION', 'mysql'), /* |-------------------------------------------------------------------------- | Database Connections |-------------------------------------------------------------------------- | | Here are each of the database connections setup for your application. | Of course, examples of configuring each database platform that is | supported by Laravel is shown below to make development simple. | | | All database work in Laravel is done through the PHP PDO facilities | so make sure you have the driver for your particular database of | choice installed on your machine before you begin development. | */ 'connections' => [ 'testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', ], 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', base_path('database/database.sqlite')), 'prefix' => env('DB_PREFIX', ''), ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 3306), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => env('DB_CHARSET', 'utf8'), 'collation' => env('DB_COLLATION', 'utf8_unicode_ci'), 'prefix' => env('DB_PREFIX', ''), 'timezone' => env('DB_TIMEZONE', '+00:00'), 'strict' => env('DB_STRICT_MODE', false), ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 5432), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => env('DB_CHARSET', 'utf8'), 'prefix' => env('DB_PREFIX', ''), 'schema' => env('DB_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' => env('DB_CHARSET', 'utf8'), 'prefix' => env('DB_PREFIX', ''), ], ], /* |-------------------------------------------------------------------------- | Migration Repository Table |-------------------------------------------------------------------------- | | This table keeps track of all the migrations that have already run for | your application. Using this information, we can determine which of | the migrations on disk haven't actually been run in the database. | */ 'migrations' => 'migrations', /* |-------------------------------------------------------------------------- | Redis Databases |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also | provides a richer set of commands than a typical key-value systems | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ 'cluster' => env('REDIS_CLUSTER', false), 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'port' => env('REDIS_PORT', 6379), 'database' => env('REDIS_DATABASE', 0), 'password' => env('REDIS_PASSWORD', null), ], ], ]; 文件位于app文件夹外的根项目文件夹中:

.env

我假设这是最后一个文件(APP_ENV=local APP_DEBUG=true APP_KEY=SomeRandomKey!!! APP_LOCALE=en APP_FALLBACK_LOCALE=en DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 DB_DATABASE=database DB_USERNAME=homestead DB_PASSWORD=secret CACHE_DRIVER=memcached SESSION_DRIVER=memcached QUEUE_DRIVER=database ),我必须更改.env名称,但我不完全确定。任何帮助将不胜感激。

仅供参考:这里的最终结果是能够连接到数据库并显示我在用户表中添加的用户的记录。

1 个答案:

答案 0 :(得分:1)

您确定拥有带有架构名称的数据库&#39;数据库&#39;?

您需要在设置数据库时更改DB_属性。

E.g。

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydbschemaname
DB_USERNAME=dbadmin
DB_PASSWORD=myverysecretpassword