Laravel是当今最流行的PHP框架之一,它提供了丰富的功能和便捷的开发体验。Laravel Nova是一个专门为Laravel应用程序设计的管理界面构建器,可帮助您更轻松地创建和管理后台管理面板。在本文中,我们将看看如何使用Laravel Nova进行CRUD操作。
什么是CRUD操作?
CRUD是“创建、读取、更新和删除”的缩写。这四个操作是任何应用程序的基本功能。通过CRUD操作,您可以实现对数据库中数据的增加、查询、更新和删除等基本操作。在Laravel框架中,我们可以使用Eloquent ORM来轻松地实现这些操作。但是,如果您想要一个更友好的管理面板,Laravel Nova会为您提供一种非常棒的解决方案。
安装Laravel Nova
在使用Laravel Nova之前,我们需要先安装它。Laravel Nova是一个商业产品,官方提供了一个30天免费试用期。如果您想要尝试它,可以前往https://nova.laravel.com/网站创建一个账户并获取试用许可证。
安装完成后,我们可以将Nova添加到我们的Laravel应用程序中。您可以使用composer来完成这个过程,只需在控制台中进入您的项目文件夹,然后运行以下命令即可:
composer require laravel/nova
此外,您还需要注册Nova服务提供者。 在config / app.php文件中,找到providers数组,然后添加以下代码:
LaravelNovaNovaServiceProvider::class,
运行以上命令后,您需要运行以下命令:
php artisan nova:install
该命令将为您的应用程序生成Nova配置文件和资源目录。您还需要使用Nova发布命令将Nova的CSS和JavaScript文件发布到public / vendor / nova目录:
php artisan vendor:publish --tag=nova-assets
接下来,您还需要在config文件夹中的auth.php文件中设置驱动程序为session,才能让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和timestamps字段。您可以根据自己的需要调整和增加其他字段。完成后运行数据库迁移:
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
现在,我们需要将Blog资源连接到Laravel Nova。为此,您可以打开app / Nova / NovaServiceProvider.php文件,并将以下内容添加到其boot方法中:
use AppNovaBlog;
// ...
public
.........................................................