2016-08-17 7 views
1

Я пытаюсь запустить запрос на основе Lumen через localhost. Я не знаю, как правильно назвать нужное имя базы данных.Как установить соединение с базой данных в PHP Laravel Lumen?

EDIT: Причина, почему я получаю ошибку ниже из-за названия имени БД в моем файле.envв моем проекте. В строке DB_DATABASE=mydbschemaname в моем файле .env должно быть указано имя моей базы данных, но как это узнать? Я не могу найти его нигде.

database error

код, который я имею в следующем, routes.php находится в app-> Http:

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

UserController.php в app-> HTTP-> Контроллеры:

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 в приложении-> 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', 
    ]; 
} 

[date]_create_users_table.php в app-> database-> миграции:

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, но я не совсем уверен. Любая помощь будет оценена по достоинству.

FYI: Конечным результатом здесь является возможность подключения к базе данных и отображения этой записи для пользователя, которую я добавляю в пользовательскую таблицу.

+0

Да, вам необходимо установить информацию о соединении в вашу базу данных в файле '.env'. – patricus

+0

@patricus Я это понимаю. Я не знаю имя моего db, поэтому я не могу подключиться. Есть ли способ узнать это? – NoReceipt4Panda

+0

Вы несете ответственность за создание базы данных. После создания базы данных обновите файл '.env' информацией о соединении (например, имя созданной вами базы данных), а затем запустите миграцию (' php artisan migrate'), чтобы создать таблицы внутри базы данных. – patricus

ответ

1

У вас нет базы данных с названием "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 Management studio, для этого? – NoReceipt4Panda