LoginSignup
0
0

Laravelとは?

Posted at

Laravelは、PHPで書かれたオープンソースのウェブアプリケーションフレームワークです。シンプルかつエレガントな文法を提供し、Web開発を効率的かつ楽しませることを目的としています。以下は、Laravelの主要な機能と、それに関連するコード例を含む詳細な説明です。

1. インストール

Laravelのインストールは、Composerを使用して行います。まず、Composerをインストールしていない場合はインストールしてください。

composer global require "laravel/installer"

Composerは、PHPの依存管理ツールです。プロジェクトのライブラリやパッケージの依存関係を管理し、必要なバージョンのライブラリをインストールするために使用されます。Composerを使用することで、簡単にパッケージのインストールや更新が行えるようになり、プロジェクトの依存関係の管理が非常に楽になります。

Composerの主な機能

  1. パッケージのインストール:必要なライブラリやフレームワークをインストールします。
  2. 依存関係の解決:指定されたライブラリの依存関係を自動的に解決し、適切なバージョンをインストールします。
  3. オートローディング:インストールされたライブラリを自動的に読み込むためのオートローダーを生成します。
  4. バージョン管理:特定のバージョンのライブラリをインストールし、プロジェクトの安定性を保ちます。

Composerのインストール方法

Composerは、以下の手順でインストールできます。

  1. Composerのインストーラをダウンロード

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    
  2. インストーラの検証

    php -r "if (hash_file('sha384', 'composer-setup.php') === 'HASH_VALUE') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    

    HASH_VALUEは、Composerの公式サイトから最新のハッシュ値を取得してください。

  3. Composerのインストール

    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    

    これにより、Composerがローカルにインストールされます。

  4. グローバルインストール(オプション)

    Composerをグローバルに利用する場合は、以下のコマンドを実行して、Composerをシステムのパスに移動します。

    sudo mv composer.phar /usr/local/bin/composer
    

Composerの基本的な使用方法

  1. 新しいプロジェクトの作成

    composer init
    

    プロジェクトの名前、説明、依存関係などを設定します。

  2. パッケージのインストール

    例えば、Laravelをインストールする場合は以下のようにします。

    composer require laravel/installer
    
  3. 既存プロジェクトの依存関係のインストール

    composer.jsonファイルがあるプロジェクトで依存関係をインストールする場合は、以下のコマンドを実行します。

    composer install
    
  4. パッケージの更新

    依存関係を最新バージョンに更新するには、以下のコマンドを使用します。

    composer update
    
  5. オートローダーの生成

    自作のクラスを自動的に読み込むためのオートローダーを生成します。

    composer dump-autoload
    

まとめ

Composerを使うことで、PHPプロジェクトの依存関係を簡単に管理し、必要なライブラリを迅速にインストール・更新できます。Laravelをはじめとする多くのPHPフレームワークやライブラリがComposerに対応しているため、現代のPHP開発には欠かせないツールとなっています。

その後、新しいLaravelプロジェクトを作成します。

laravel new myproject
cd myproject

2. ディレクトリ構造

Laravelのディレクトリ構造は以下のようになっています:

myproject/
├── app/
│   ├── Console/
│   ├── Exceptions/
│   ├── Http/
│   ├── Models/
│   ├── Providers/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
└── vendor/

3. ルーティング

ルーティングは、アプリケーションの異なるURLに対してどのコントローラメソッドが呼び出されるかを定義します。routes/web.phpファイルに定義します。

// routes/web.php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

Route::get('/about', function () {
    return 'About Page';
});

4. コントローラー

コントローラーは、ビジネスロジックを処理するためのクラスです。以下は、シンプルなコントローラーの例です。

// app/Http/Controllers/PageController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PageController extends Controller
{
    public function home()
    {
        return view('home');
    }

    public function about()
    {
        return view('about');
    }
}

ルートにコントローラーをバインドします:

// routes/web.php

use App\Http\Controllers\PageController;

Route::get('/', [PageController::class, 'home']);
Route::get('/about', [PageController::class, 'about']);

5. モデルとデータベース

モデルは、データベースとのやり取りを行うためのクラスです。以下は、Postモデルの例です。

// app/Models/Post.php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;
    protected $fillable = ['title', 'content'];
}

6. マイグレーション

マイグレーション(Migration)は、Laravelにおけるデータベーススキーマのバージョン管理システムです。マイグレーションを使うことで、データベーステーブルの作成、更新、削除などの操作をコードで定義し、バージョン管理することができます。これにより、データベースの変更をチームメンバー間で共有しやすくなり、異なる環境間でのデータベースの整合性を保つことができます。

マイグレーションの基本

Laravelでマイグレーションを使用するための基本的な流れは以下の通りです。

  1. マイグレーションファイルの作成
  2. マイグレーションの実行
  3. マイグレーションのロールバック
  4. マイグレーションファイルの編集

1. マイグレーションファイルの作成

マイグレーションファイルは、php artisan make:migrationコマンドで作成します。このコマンドにより、database/migrationsディレクトリにマイグレーションファイルが生成されます。

例えば、postsテーブルを作成するマイグレーションファイルを作成するには、以下のコマンドを実行します。

php artisan make:migration create_posts_table

これにより、以下のようなマイグレーションファイルが生成されます。

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

2. マイグレーションの実行

マイグレーションを実行するには、以下のコマンドを使用します。

php artisan migrate

これにより、upメソッドに定義された操作(テーブルの作成やカラムの追加など)が実行されます。

3. マイグレーションのロールバック

マイグレーションを元に戻す(ロールバック)には、以下のコマンドを使用します。

php artisan migrate:rollback

これにより、直近のマイグレーションが取り消され、downメソッドに定義された操作(テーブルの削除など)が実行されます。

4. マイグレーションファイルの編集

マイグレーションファイルには、テーブルの作成や変更、削除に関するコードを記述します。例えば、既存のpostsテーブルに新しいカラムを追加する場合、以下のようにマイグレーションファイルを作成します。

php artisan make:migration add_user_id_to_posts_table

生成されたファイルを以下のように編集します。

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddUserIdToPostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('posts', function (Blueprint $table) {
            $table->unsignedBigInteger('user_id')->after('id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('posts', function (Blueprint $table) {
            $table->dropForeign(['user_id']);
            $table->dropColumn('user_id');
        });
    }
}

詳細なマイグレーションの操作

テーブルの変更

既存のテーブルにカラムを追加、変更、削除するための操作もマイグレーションで行います。

カラムの追加

Schema::table('posts', function (Blueprint $table) {
    $table->string('author')->nullable();
});

カラムの変更

カラムの型や属性を変更する場合、doctrine/dbalパッケージをインストールする必要があります。

composer require doctrine/dbal

その後、以下のようにマイグレーションファイルを編集します。

Schema::table('posts', function (Blueprint $table) {
    $table->string('title', 100)->change();
});

カラムの削除

Schema::table('posts', function (Blueprint $table) {
    $table->dropColumn('author');
});

インデックスの作成と削除

インデックスの作成

Schema::table('posts', function (Blueprint $table) {
    $table->index('user_id');
});

インデックスの削除

Schema::table('posts', function (Blueprint $table) {
    $table->dropIndex(['user_id']);
});

マイグレーションの利点

  1. バージョン管理:データベーススキーマの変更をバージョン管理できるため、変更履歴を追跡しやすくなります。
  2. チーム開発:複数人での開発において、データベースの変更をコードで共有できるため、環境間の差異をなくすことができます。
  3. 再現性:マイグレーションを使用することで、同じデータベース構造を複数の環境で再現することが容易になります。
  4. 自動化:CI/CDパイプラインに組み込むことで、デプロイ時に自動的にデータベースのスキーマ変更を適用できます。

マイグレーションは、データベース管理を効率的かつ安全に行うための強力なツールです。Laravelのマイグレーションシステムを活用することで、データベース操作をコードで管理し、バージョン管理システムと連携させることで、開発プロセス全体を改善することができます。

// database/migrations/2021_01_01_000000_create_posts_table.php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('posts');
    }
}

マイグレーションを実行します:

php artisan migrate

7. Eloquent ORM

Eloquentは、Laravelのオブジェクトリレーショナルマッピング(ORM)システムです。以下は、Postモデルを使った基本的な操作の例です。

// 新しいポストを作成
$post = new Post();
$post->title = 'My First Post';
$post->content = 'This is the content of the first post.';
$post->save();

// 全てのポストを取得
$posts = Post::all();

// 特定のポストを取得
$post = Post::find(1);

// ポストを更新
$post->title = 'Updated Title';
$post->save();

// ポストを削除
$post->delete();

8. ビュー

ビューは、アプリケーションのHTMLを生成するテンプレートです。以下は、シンプルなビューの例です。

<!-- resources/views/home.blade.php -->

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to the Home Page</h1>
</body>
</html>

コントローラーでビューを返します:

// app/Http/Controllers/PageController.php

public function home()
{
    return view('home');
}

9. フォームとバリデーション

フォームデータのバリデーションもLaravelでは簡単に行えます。

// app/Http/Controllers/PostController.php

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
{
    public function store(Request $request)
    {
        $validated = $request->validate([
            'title' => 'required|max:255',
            'content' => 'required',
        ]);

        $post = Post::create($validated);

        return redirect()->route('posts.index');
    }
}

10. 認証

Laravelには認証機能が組み込まれています。以下は、認証機能を設定する方法です。

composer require laravel/ui
php artisan ui vue --auth
npm install
npm run dev

これにより、ログインや登録のビューとルートが生成されます。

以上が、Laravelの基本的な使い方と機能の概要です。詳細なドキュメントやさらに高度な使い方については、Laravel公式ドキュメントを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0