109 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace app\common\model\community;
 | 
						|
 | 
						|
 | 
						|
use app\common\basics\Models;
 | 
						|
use app\common\enum\CommunityCommentEnum;
 | 
						|
use app\common\model\user\User;
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * 种草社区评论
 | 
						|
 * Class CommunityComment
 | 
						|
 * @package app\common\model\community
 | 
						|
 */
 | 
						|
class CommunityComment extends Models
 | 
						|
{
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * @notes 关联用户
 | 
						|
     * @return \think\model\relation\HasOne
 | 
						|
     * @author 段誉
 | 
						|
     * @date 2022/5/7 15:22
 | 
						|
     */
 | 
						|
    public function user()
 | 
						|
    {
 | 
						|
        return $this->hasOne(User::class, 'id', 'user_id')
 | 
						|
            ->bind(['nickname', 'avatar', 'sn']);
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * @notes 子级
 | 
						|
     * @return \think\model\relation\HasMany
 | 
						|
     * @author 段誉
 | 
						|
     * @date 2022/5/10 11:45
 | 
						|
     */
 | 
						|
    public function child()
 | 
						|
    {
 | 
						|
        return $this->hasMany(self::class, 'id', 'pid');
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * @notes 关联文章
 | 
						|
     * @return \think\model\relation\HasOne
 | 
						|
     * @author 段誉
 | 
						|
     * @date 2022/5/10 11:46
 | 
						|
     */
 | 
						|
    public function article()
 | 
						|
    {
 | 
						|
        return $this->hasOne(CommunityArticle::class, 'id', 'article_id');
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * @notes 一级评论的所有子级评论
 | 
						|
     * @param $value
 | 
						|
     * @param $data
 | 
						|
     * @return array
 | 
						|
     * @throws \think\db\exception\DataNotFoundException
 | 
						|
     * @throws \think\db\exception\DbException
 | 
						|
     * @throws \think\db\exception\ModelNotFoundException
 | 
						|
     * @author 段誉
 | 
						|
     * @date 2022/5/9 14:28
 | 
						|
     */
 | 
						|
    public function getChildAttr($value, $data)
 | 
						|
    {
 | 
						|
        $lists = self::with(['user'])
 | 
						|
            ->whereFindInSet('ancestor_relation', $data['id'])
 | 
						|
            ->where(['del' => 0, 'status' => CommunityCommentEnum::STATUS_SUCCESS])
 | 
						|
            ->order(['like' => 'desc'])
 | 
						|
            ->select()->toArray();
 | 
						|
        return $lists;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * @notes 增加点赞数量
 | 
						|
     * @param $id
 | 
						|
     * @return mixed
 | 
						|
     * @author 段誉
 | 
						|
     * @date 2022/5/9 15:35
 | 
						|
     */
 | 
						|
    public static function incLike($id)
 | 
						|
    {
 | 
						|
        return self::where(['id' => $id])->inc('like')->update();
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    /**
 | 
						|
     * @notes 减少点赞数量
 | 
						|
     * @param $id
 | 
						|
     * @return mixed
 | 
						|
     * @author 段誉
 | 
						|
     * @date 2022/5/9 15:38
 | 
						|
     */
 | 
						|
    public static function decLike($id)
 | 
						|
    {
 | 
						|
        $where = [
 | 
						|
            ['id', '=', $id],
 | 
						|
            ['like', '>=', 1]
 | 
						|
        ];
 | 
						|
        return self::where($where)->dec('like')->update();
 | 
						|
    }
 | 
						|
 | 
						|
} |