📜  根据路由 laravel 添加活动类 - Html (1)

📅  最后修改于: 2023-12-03 15:10:49.726000             🧑  作者: Mango

根据路由 Laravel 添加活动类 - Html

在Laravel中,添加活动方法可以实现对用户操作的记录和追踪,方便后续的数据分析和处理。本文将介绍如何根据路由在Laravel中添加活动类。

实现步骤
  1. 创建活动模型文件

首先,在app目录下创建一个Activity模型:

php artisan make:model Activity -m

生成的Activity.php模型文件中应该包含类似下面的内容:

class Activity extends Model
{
    protected $guarded = [];
}
  1. 新建活动表迁移文件

运行下面的命令生成一个活动表迁移文件:

php artisan make:migration create_activities_table --create=activities

得到的迁移文件应该类似如下代码:

public function up()
{
    Schema::create('activities', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->unsignedBigInteger('user_id');
        $table->unsignedBigInteger('subject_id');
        $table->string('subject_type', 50);
        $table->string('description', 250);
        $table->timestamps();
    });
}
public function down()
{
    Schema::dropIfExists('activities');
}
  1. 修改Activity模型

更新Activity模型文件以声明$fillable属性:

protected $fillable = [
    'user_id', 'subject_id', 'subject_type', 'description'
];

然后在Activity类中添加一个静态方法record(),用于创建并保存新的Activity实例:

public static function record($description)
{
    if (auth()->check()) {
        auth()->user()->activities()->create([
            'user_id' => auth()->id(),
            'description' => $description,
            'subject_id' => $this->id, // 当且仅当$subject实例存在时才会设置此属性
            'subject_type' => get_class($this),
        ]);
    }
}
  1. 添加路由

在web.php路由文件中添加一个活动记录路由:

Route::post('activities/{subject}', 'ActivityController@store');
  1. 添加控制器

在app/Http/Controllers目录下新建一个ActivityController控制器:

class ActivityController extends Controller
{
    public function store($subject)
    {
        $subject->record('created');
    }
}
  1. 为模型添加 Traits

为了复用Activity模型的代码,将其相关逻辑封装到一个特性文件(ActivitySubject.php)中:

trait ActivitySubject
{
    public function activities()
    {
        return $this->morphMany('App\Activity', 'subject');
    }
    public function recordActivity($description)
    {
        $this->activities()->create([
            'user_id' => $this->user_id,
            'description' => $description,
        ]);
    }
}

然后在其他需要活动记录的模型中引入此特性,如下:

class Thread extends Model
{
    use ActivitySubject;
}
总结

在本文中,我们介绍了如何在Laravel中添加活动类,主要包括创建活动模型、新建活动表迁移文件、修改Activity模型、添加路由、添加控制器、为模型添加 Traits等步骤。通过这些简单的步骤,我们可以轻松地实现对用户操作的记录和追踪,方便后续的数据分析和处理。

参考资料
  1. Laravel文档: https://laravel.com/docs/8.x
  2. Laravel从入门到精通: https://laravelacademy.org/