detosphere-ltd / laravel-faqs
常见问题CRUD实现
1.0.2
2021-10-14 04:43 UTC
Requires
- php: ^7.3|^8.0
- alhaji-aki/laravel-uuid: ^1.0
- illuminate/database: ^7.30|^8.0
- illuminate/support: ^7.30|^8.0
Requires (Dev)
- ext-pdo_sqlite: *
- friendsofphp/php-cs-fixer: ^3.0
- orchestra/testbench: ^5.2|^6.11
- phpunit/phpunit: ^9.5.1
- spatie/macroable: ^1.0
README
这是一个简单的包,用于帮助管理项目中的常见问题。
安装
您可以通过运行以下命令使用composer安装此包:
composer require detosphere-ltd/laravel-faqs
安装完成后,包将自动注册自己。运行以下命令以发布迁移文件:
php artisan vendor:publish --provider="DetosphereLtd\LaravelFaqs\FAQServiceProvider"
发布迁移后,您可以运行迁移来创建faqs表:
php artisan migrate
模型和迁移
此包只有一个模型(Faq
)及其相应的迁移文件。您可以扩展它并按需使用。模型上受保护的属性只有id
和uuid
。
作用域
Faq模型具有scopeType
作用域,用于按类型查询常见问题。如下所示非常简单。
$faqs = \DetosphereLtd\LaravelFaqs\Models\Faq::type('type')->get();
操作类
此包公开了四个操作类。下面可以找到它们的详细信息。
CreateFAQAction
用于创建新的常见问题。execute方法接受一个数组。它返回创建的常见问题。
$faq = (new CreateFAQAction)->execute([ 'question' => 'What does your app do?', 'answer' => 'It helps manage Frequently asked questions on any application.', 'type' => 'type' ]);
UpdateFAQAction
用于更新已存在的常见问题。execute方法接受要更新的常见问题和数组。它返回更新的常见问题。
$faq = \DetosphereLtd\LaravelFaqs\Models\Faq::first(); $updatedFaq = (new UpdateFAQAction)->execute($faq, [ 'question' => 'What does your app do?', 'answer' => 'It helps manage Frequently asked questions on any application.', 'type' => 'type' ]);
DeleteFAQAction
用于从数据库中删除已存在的常见问题。execute方法接受要删除的常见问题。常见问题是软删除的。它返回空值。
$faq = \DetosphereLtd\LaravelFaqs\Models\Faq::first(); (new DeleteFAQAction)->execute($faq);
IncrementFAQHelpfulnessAction
用于增加数据库中已存在的常见问题的helpful_yes
和helpful_no
。execute方法接受要增加的常见问题和增加的有用性。有用性必须是yes
或no
。它返回增加后的常见问题。如果传递了无效的helpful
参数,则抛出查询异常。
$faq = \DetosphereLtd\LaravelFaqs\Models\Faq::first(); $incrementedYes = (new IncrementFAQHelpfulnessAction)->execute($faq, 'yes'); $incrementedNo = (new IncrementFAQHelpfulnessAction)->execute($faq, 'no');
用法
您可以通过像任何正常的PHP类一样实例化该类。
(new CreateFAQAction)->execute([ 'question' => 'What does your app do?', 'answer' => 'It helps manage Frequently asked questions on any application.', 'type' => 'type' ]);
此外,您还可以从Laravel容器中解析该类。
app(CreateFAQAction::class)->execute([ 'question' => 'What does your app do?', 'answer' => 'It helps manage Frequently asked questions on any application.', 'type' => 'type' ]);
最后,您还可以将操作类注入到您的控制器方法中,如下所示。
<?php namespace App\Http\Controllers; use DetosphereLtd\LaravelFaqs\Actions\CreateFAQAction; class FaqController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function store(Request $request, CreateFAQAction $action) { $action->execute([ 'question' => $request->question, 'answer'=> $request->answer, 'type' => $request->type ]); return response(201); } }
测试
vendor/bin/phpunit
贡献
有关详细信息,请参阅CONTRIBUTING。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。