收藏表結構
| 字段 | 含義 |
| --- | --- |
| id | 主鍵 |
| user_id | 用戶id |
| title| 收藏內容的標題 |
| url | 收藏內容的原文地址,不帶域名 |
| description | 收藏內容的描述 |
| table_name | 收藏實體以前所在表不帶前綴 |
| object_id | 收藏內容里原來的主鍵id |
| create_time | 收藏時間 |
加入數據后如圖所示:

前端代碼:
~~~
<a href="{:url('user/favorite/add')}"
class="js-favorite-btn"
data-title="{:base64_encode($article.post_title)}"
data-url="{:cmf_url_encode('portal/Article/index',array('id'=>$article['id']))}"
data-table="portal_post"
data-id="{$article['id']}"
>
<i class="fa fa-star-o"></i>
</a>
~~~
推送到后臺其實是由js完成的
js代碼如下
public\static\js\frontend.js
~~~
var $js_favorite_btn = $('a.js-favorite-btn');
if ($js_favorite_btn.length) {
Wind.use('noty', function () {
$js_favorite_btn.on('click', function (e) {
e.preventDefault();
var $this = $(this),
href = $this.prop('href'),
url = $this.data("url"),
id = $this.data("id"),
table = $this.data('table'),
title = $this.data("title"),
description = $this.data("description");
$.post(href, {
id: id,
table: table,
url: url,
title: title,
description: description
}, function (data) {
if (data.code == 1) {
if (data.msg) {
noty({
text: data.msg,
type: 'success',
layout: 'center',
callback: {
afterClose: function () {
if (data.url) {
location.href = data.url;
}
}
}
});
}
} else if (data.code == 0) {
noty({
text: data.msg,
type: 'error',
layout: 'center',
callback: {
afterClose: function () {
if (data.url) {
location.href = data.url;
}
}
}
});
}
}, "json");
});
});
}
~~~
邏輯很清晰,阻止按鈕默認動作,ajax傳輸數據,成功后重載頁面
* * * * *
后臺邏輯主要集中在
\app\user\controller\FavoriteController.php
\app\user\model\UserFavoriteModel.php
這兩個文件
* * * * *
分析
一個用戶可以收藏多篇文章
一篇文章可以被多個用戶收藏
我們的數據表中因為多了諸如 description title url這樣的字段,對于某一用戶的收藏文章,就可以用
~~~
$userQuery = Db::name("UserFavorite");
$favorites = $userQuery->where(['user_id' => $userId])->order('id desc')->paginate(10);
~~~
來查詢并列出表格,這樣節省了再次查詢文章表所需要的sql
- php套路
- 套路之類結構
- thinkphp分塊解析之Collection
- thinkphp基礎之collection
- Collection在thinkphp中的運用
- thinkcmf模塊分析
- Controller按界面點擊順序排列表
- user模塊-Controller分析
- portal模塊-Controller分析
- admin模塊-Controller分析
- user模塊-腦圖
- portal模塊-腦圖
- admin模塊-腦圖
- cmf公共函數解析-common.php
- thinkcmf點滴記錄
- 自定義標簽詳解
- 插件
- 系統信息插件
- 插件演示插件
- 留言板插件
- 留言板1 建立胚胎
- 留言板1-1 數據庫變化
- 留言板1-2 自定義鉤子
- 留言板2 連接數據庫
- 留言板3 讀取后臺界面數據
- 留言板4 前端模板
- 留言板5 分離cssjs文件
- 留言板6 驗證
- 留言板7 圖形驗證碼
- 留言板8 后臺留言列表頁
- 留言板9 后記
- 評論插件
- 1 分析數據表
- 2 CommentModel.php
- 3 UserModel.php
- 4 DCommentPlugin.php
- 前端調用代碼
- 喜歡插件
- 1 分析
- 2 收藏功能
- 3 插件建模
- 4 數據庫設計
- 5 插入一條數據
- 多語言
- thinkphp多語言
- thinkcmf多語言