PHP

Laravel5.4でMySQLを利用する

laravel
o_wani
この記事は作成から7年以上経過しているため、内容が古くなっている可能性があります。

前回の続きとして、今回はデータベースの設定を進める。

データベースの設定

参考:
Database: Getting Started

config/database.phpを修正する。

defaultの値:mysql

'default' => env('DB_CONNECTION', 'mysql'),

mysqlの設定:接続情報を記載

'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' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

usersテーブル

例)以下のようなテーブル構成:

> select * from users\G
*************************** 1. row ***************************
                     id: 1
             ip_address: 127.0.0.1
               username: administrator
               password: $2a$07$S9uyftVopmu61qgmTo36
                   salt: 
                  email: admin@admin.com
        activation_code: 
forgotten_password_code: NULL
forgotten_password_time: NULL
          remember_code: NULL
             created_on: 1268889823
             last_login: 1474965675
                 active: 1
             first_name: Admin
              last_name: istrator
                company: ADMIN
                  phone: 0
1 row in set (0.00 sec)

あとで、このテーブルからデータを抽出する。

モデル生成

参考:
Eloquent: Getting Started

Defining Models

コマンドでモデルを生成:

$ php artisan make:model User
Model created successfully.

ファイルapp/User.phpが生成される:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //
}

モデルの修正

app/User.php
最低限の修正を加える:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
  /**
   * The table associated with the model.
   *
   * @var string
   */
  protected $table = 'users';

  /**
   * Indicates if the model should be timestamped.
   *
   * @var bool
   */
  public $timestamps = false;
}

table名を設定し、created_atupdated_atといったカラムは今回ないので
$timestamps = false;にする。

モデルの使用

今回ログイン画面のコントローラーで使用してみる。
app/Http/Controllers/Auth/LoginController.php

モデルをインポート:

use App\User;

Eloquentモデルの強力なクエリービルダーを使用:

$users = User::all();
foreach ($users as $user) {
    echo $user->username;
}

.envの修正

ここまできて、うまくデータベースに接続できない。。接続情報は定義しているのに。。。と思ったが、.envファイルの修正が必要だった。
データベースのステージング環境、プロダクション環境などの接続情報を書いておくファイルで、git管理時には、コミットしないファイルとする。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sample_db
DB_USERNAME=user
DB_PASSWORD=password

これで、データベースから取得したデータが表示されるようになった。

Alt text

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました