利用Laravel怎么开发一个用户动态模块(laravel,开发技术)

时间:2024-04-29 13:12:08 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    %E5%88%A9%E7%94%A8Laravel%E6%80%8E%E4%B9%88%E5%BC%80%E5%8F%91%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E5%8A%A8%E6%80%81%E6%A8%A1%E5%9D%97

概念抽象

用户动态,顾名思义,动态的产生,就是一系列事件的历史记录,所以首先关注“事件”这个名词,它有哪些属性:

触发者,基于社区所有的事件几乎都是由用户触发的

事件主体,事件的主体信息,例如“xxx发布了文章” 中的 “文章”。

事件属性,事件主体不同,所需要的附加信息也不同,比如事件类型。

发生时间,记录事件产生的时间,当然了在我们的数据库通常记录了所有数据产生的时间。

我们将用户动态抽象成只有 4 个基础属性的结构,就比较容易实现了:

而主体部分就是 Laravel 里的 morph relation, 多态关联。

怎么展示

我们的动态展示需求通常有以下几种:

我的好友的动态

某个人的动态,通常是个人中心

全部动态,比如 Laravel China 首页的全部动态

动态搜索,比较少见

我最近正在开发 EasyWeChat 新版网站,其中也有用户动态,举例:

你会发现,基本上每种动态的写法都不一样,所以我们还需要记录一个 “事件类型” ,比如 “关注”、 “发布”、“回复”、“购买”。

然后我们在 blade 或者其它模板引擎的使用中,就可以 switch ... case 写法,来应用不同的模板渲染这些样式,比如 blade 中,我的用法:

代码实现

前面我们已经讨论完了数据存储以及展示方面的设计,接着就是怎么实现,如果你比较勤劳,可以原生实现,毕竟上面的实现方法已经描述清晰,写点代码实现就搞定了,今天我要推荐的是使用 spatie/laravel-activitylog 来实现:

安装一直很简单对吧:

记录动态

当然了这种记录没意义,几乎没有任何有用的信息,所以我们通常的用法应该是这样:

方法介绍:

performedOn($model) 设置事件主体,也就是 Eloquent Model 实例

causedBy($user) 设置事件触发者, User 实例

withProperties($properties) 上面我们概念里的事件属性

withProperty($key, $value) 事件属性的单个用法

log($description) 事件描述

比如,我们要记录一条,用户发布了讨论:

或者用户注册时,我要记录一条动态:

你会发现我都没有设置触发者,因为这个模块如果你没设置触发者默认就是当前登录用户。

展示动态

展示动态就是根据条件从数据库拿出来,这里使用包提供的模型类:Spatie\Activitylog\Models\Activity

use Spatie\Activitylog\Models\Activity;

接着就是遍历展示就好了。

一些经验与技巧

设置一个专门的动态观察者类来记录动态

代码如下:

然后我们去注册这个订阅类:

在 App\Providers\EventServiceProvider 中 $subscribe 中注册这个订阅类:

本文:利用Laravel怎么开发一个用户动态模块的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么在PHP中调用API接口实现一个天气查询功能下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18