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

问题描述:

我试图通过localhost运行基于流明的查询。我不知道如何正确调用正确的数据库名称。如何在PHP Laravel Lumen中建立与数据库的连接?

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

database error

代码我有如下,routes.php位于APP->的Http:

$app->get('/records', '[email protected]'); 

在APP-> HTTP- UserController.php>控制器:

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); 
    } 
} 

User.php in app-> Http:

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', 
    ]; 
} 

在APP->数据库 - >迁移[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' => '[email protected]', 'password' => 'thisisthepassword', 'updated_at' => '2015-10-15 01:23:45', 'created_at' => '2015-10-15 01:23:45'] 
     ); 
    } 

    public function down() 
    { 
     Schema::drop('users'); 
    } 
} 

然后当然,我有位于所述database.php APP->于供应商> laravel->内腔框架 - >配置:

<?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), 
     ], 

    ], 

]; 

最后,这里是我的.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),我必须更改DB_DATABASE名称,但我不完全确定。任何帮助,将不胜感激。

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

+0

是的,你需要在'.env'文件中设置连接信息到你的数据库。 – patricus

+0

@patricus我明白这一点。我不知道我的数据库的名称,因此我无法连接。有没有办法找到这个? – NoReceipt4Panda

+0

您有责任创建数据库。创建数据库后,使用连接信息(例如您创建的数据库的名称)更新'.env'文件,然后运行迁移('php artisan migrate')在数据库中创建表。 – patricus

你确定你有架构名称为'database'的数据库吗?

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

E.g.

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

不幸的是,这完全没有帮助,因为我很困惑在哪里/如何找到数据库的名称。这最终是阻碍我的东西。 – NoReceipt4Panda

+0

我只举例。你需要配置你自己的数据库。阅读关于数据库,MySQL(或其他),创建自己的,命名它,并将名称放入'.env'配置文件。 – miikes

+0

我的问题是,我可以通过GIT bash命令行创建数据库吗?还是我需要使用像mySQL管理工作室这样的软件来实现? – NoReceipt4Panda