ホームページ  >  記事  >  PHPフレームワーク  >  Laravel 開発: CRUD 操作に Laravel Nova を使用する方法?

Laravel 開発: CRUD 操作に Laravel Nova を使用する方法?

WBOY
WBOYオリジナル
2023-06-14 11:40:041300ブラウズ

Laravel は、現在最も人気のある PHP フレームワークの 1 つで、豊富な機能と便利な開発エクスペリエンスを提供します。 Laravel Nova は、Laravel アプリケーション専用に設計された管理インターフェイス ビルダーで、バックエンド管理パネルをより簡単に作成および管理できるようにします。この記事では、CRUD 操作に Laravel Nova を使用する方法を見ていきます。

CRUD操作とは何ですか?

CRUD は、「作成、読み取り、更新、削除」の略称です。これら 4 つの操作は、あらゆるアプリケーションの基本機能です。 CRUD 操作を通じて、データベース内のデータの追加、クエリ、更新、削除などの基本的な操作を実装できます。 Laravel フレームワークでは、Eloquent ORM を使用してこれらの操作を簡単に実装できます。ただし、よりユーザーフレンドリーな管理パネルが必要な場合は、Laravel Nova が最適なソリューションを提供します。

Laravel Nova をインストールする

Laravel Nova を使用する前に、まずインストールする必要があります。 Laravel Nova は商用製品であり、公式には 30 日間の無料試用期間が提供されています。試してみたい場合は、https://nova.laravel.com/ にアクセスしてアカウントを作成し、試用ライセンスを取得してください。

インストールが完了したら、Laravel アプリケーションに Nova を追加できます。このプロセスを完了するには、composer を使用できます。コンソールでプロジェクト フォルダーに移動し、次のコマンドを実行するだけです。

composer require laravel/nova

さらに、Nova サービス プロバイダーを登録する必要があります。 config/app.php ファイルで、プロバイダー配列を見つけて、次のコードを追加します。

LaravelNovaNovaServiceProvider::class,

上記のコマンドを実行した後、次のコマンドを実行する必要があります。

php artisan nova:install

このコマンドは、プログラムは Nova 構成ファイルとリソース ディレクトリを生成します。また、Nova の公開コマンドを使用して、Nova の CSS および JavaScript ファイルを public/vendor/nova ディレクトリに公開する必要があります。

php artisan vendor:publish --tag=nova-assets

次に、次の auth.php ファイルでドライバーを設定する必要もあります。 Nova の認証システムが適切に動作できるようにするための設定フォルダー セッション:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

最後に、次のコマンドを実行して Nova の認証ルートとテーブルを生成する必要があります:

php artisan nova:install

これまでのところ、 Laravel Nova のインストールと設定作業が完了しました。

Laravel Nova を CRUD 操作に使用する

次に、Laravel Nova を CRUD 操作に使用する方法を見ていきます。簡単な例から始めます。Laravel Nova を使用して新しいブログ アプリケーションを作成してみましょう。このアプリケーションでは、ブログ投稿を作成、表示、更新、削除できます。

1. モデルの作成とデータベースの移行

まず、新しいモデルとデータベースの移行を作成する必要があります。このプロセスを完了するには、Laravel の Artisan コマンド ライン ツールを使用します。コンソールでプロジェクト フォルダーに切り替え、次のコマンドを入力します。

php artisan make:model Blog -m

このコマンドは、Blog という名前の新しいモデルを作成し、create_blogs_table という名前の新しいデータベース移行ファイルも生成します。

次に、データベース移行ファイルで「blogs」テーブルのスキーマを定義する必要があります。このファイルをdatabase/migrationsディレクトリで見つけて開きます。次のようなコードが表示されます:

public function up()
{
    Schema::create('blogs', function (Blueprint $table) {
        $table->id();
        $table->timestamps();
    });
}

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

この例では、id フィールドとタイムスタンプ フィールドのみを定義しました。必要に応じて他のフィールドを調整したり追加したりできます。完了後にデータベース移行を実行します:

php artisan migrate

2. リソース モデルを定義します

次に、リソース モデルを定義する必要があります。リソース モデルは、Laravel Nova モデルと Eloquent モデルの間の架け橋です。どのデータベーステーブルが関連付けられるかをLaravel Novaに伝えるリソースモデルを定義します。リソース モデルを作成するには、次のコマンドを入力します。

php artisan nova:resource Blog

このコマンドは、app/Nova ディレクトリに Blog.php という名前の新しいファイルを作成します。このファイルを開くと、次のコードが表示されます。

<?php

namespace AppNova;

use IlluminateHttpRequest;
use LaravelNovaFieldsID;
use LaravelNovaFieldsText;
use LaravelNovaFieldsNumber;
use LaravelNovaHttpRequestsNovaRequest;

class Blog extends Resource
{
    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = '';

    /**
     * The single value that should be used to represent the resource when being displayed.
     *
     * @var string
     */
    public static $title = 'id';

    /**
     * The columns that should be searched.
     *
     * @var array
     */
    public static $search = [];

    /**
     * Get the fields displayed by the resource.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),

            Text::make('Title')->sortable(),

            Number::make('Views')->sortable(),

            Text::make('Content')->hideFromIndex(),
        ];
    }

    /**
     * Get the cards available for the request.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array
     */
    public function cards(Request $request)
    {
        return [];
    }

    /**
     * Get the filters available for the resource.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array
     */
    public function filters(Request $request)
    {
        return [];
    }

    /**
     * Get the lenses available for the resource.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array
     */
    public function lenses(Request $request)
    {
        return [];
    }

    /**
     * Get the actions available for the resource.
     *
     * @param  IlluminateHttpRequest  $request
     * @return array
     */
    public function actions(Request $request)
    {
        return [];
    }
}

このファイルでは、Blog という新しいリソース モデルを定義します。次に、このモデルを Laravel モデルに関連付ける必要があります。モデル ファイルを開いて次のコードを先頭に追加するだけです:

namespace App;

use IlluminateDatabaseEloquentModel;

class Blog extends Model
{
    //
}

3. リソースを nova に接続する

次に、ブログ リソースを Laravel Nova に接続する必要があります。これを行うには、app/Nova/NovaServiceProvider.php ファイルを開いて、そのブート メソッドに次のコードを追加します。

use AppNovaBlog;

// ...

public function boot()
{
    // ...

    Nova::resources([
        Blog::class,
    ]);
}

Laravel Nova を正常に構成したので、アプリケーションに入ってそれが何であるかを確認できます。のように。

4. CRUD 操作を実行します

これで、Laravel Nova が正常にセットアップされ、ブログ リソースがそれに接続されました。管理パネルにアクセスして、CRUD 操作を開始できます。

コンソールで次のコマンドを実行して、ローカル開発サーバーを起動します:

php artisan serve

次に、http://localhost:8000/nova URL を開くと、ログイン ページが表示されます。 Laravel アプリケーションの既存のアカウントを使用してログインします。

これで、上部メニューの [リソース] ドロップダウン メニューをクリックし、[ブログ] を選択できるようになります。ここには空のブログリストが表示されます。

Laravel Nova を使用して、ブログ投稿を作成、読み取り、更新、削除できます。ページの右上隅にある「新しいブログ」ボタンをクリックしてデータを入力できます。新しいブログ投稿が追加されるたびに、リストは自動的に更新され、最新のデータが表示されます。

ブログ投稿の名前をクリックして表示モードと編集モードに入り、ブログ投稿の更新や削除などの他の操作を実行できます。さらに、フィルター機能を使用して特定のブログ投稿をすばやく検索したり、検索機能を使用してすべてのブログ投稿にわたってキーワードを検索したりできます。

概要

Laravel Nova を使用すると、Laravel アプリケーションのバックエンド管理パネルを簡単に作成および管理できます。このチュートリアルでは、Laravel Nova を使用して単純な CRUD アプリケーションを構築する方法を学びました。実際のプロジェクトでも同様の方法を使用し、Laravel Nova のより高度な機能を習得して、より複雑なアプリケーションを実装できます。

以上がLaravel 開発: CRUD 操作に Laravel Nova を使用する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。