detosphere-ltd/laravel-faqs

常见问题CRUD实现

1.0.2 2021-10-14 04:43 UTC

This package is auto-updated.

Last update: 2024-09-14 11:10:31 UTC


README

这是一个简单的包,用于帮助管理项目中的常见问题。

安装

您可以通过运行以下命令使用composer安装此包:

composer require detosphere-ltd/laravel-faqs

安装完成后,包将自动注册自己。运行以下命令以发布迁移文件:

php artisan vendor:publish --provider="DetosphereLtd\LaravelFaqs\FAQServiceProvider"

发布迁移后,您可以运行迁移来创建faqs表:

php artisan migrate

模型和迁移

此包只有一个模型(Faq)及其相应的迁移文件。您可以扩展它并按需使用。模型上受保护的属性只有iduuid

作用域

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_yeshelpful_no。execute方法接受要增加的常见问题和增加的有用性。有用性必须是yesno。它返回增加后的常见问题。如果传递了无效的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)。有关更多信息,请参阅许可证文件