tp5.0 聚合新闻CURD 入库

首先书写控制器中的内容,数据表的话大家就根据聚合新闻里的字段去建表就可以啦

 

<?ph

namespace app\test\controller;

use app\news\model\Detail;
use think\Cache;
use think\Controller;
use think\Db;
use think\Request;
use traits\model\SoftDelete;
use QL\QueryList;

class News extends Controller
{
    use SoftDelete;
    public function juhe($type,$page,$page_size,$is_filter)
    {
        //接收所有参数
        $params = input();
        $type = 'top';
        $page = 1;
        $page_size = 15;
        $is_filter = 1;

        //类型
        if (isset($params['type'])&& !empty($params['type'])){
            $type = $params['type'];
        }

        //当前页数
        if (isset($params['page'])&& !empty($params['page'])){
            $page = $params['page'];
        }

        //每页展示条数
        if (isset($params['page_size'])&& !empty($params['page_size'])){
            $page_size = $params['page_size'];
        }

        //是否返回内容详情
        if (isset($params['is_filter'])&& !empty($params['is_filter'])){
            $is_filter = $params['is_filter'];
        }


        //密钥
        $appid = '5aff86e0a8c678418e3457bde56ba6f1';
        //聚合新闻url
        $url = "http://v.juhe.cn/toutiao/index?"."type=".$type."&page=".$page."&page_size".$page_size."&is_filter"
            . $is_filter . "&key={$appid}";
        $data = file_get_contents($url);
//        $res = Cache::get('news');
        //获取聚合函数的数据

        $dataRes = json_decode($data,true);
        if ($dataRes['error_code']!=0){
            return json([
                'code' => 10000,
                'msg'  => '聚合平台错误',
                'data' => ''
            ]);

        }
        $newData = $dataRes['result']['data'];
        \app\test\model\News::addNews($newData);
//        var_dump($res);
    }


    /**
     * 新闻展示
     */
    public function showData()
    {

        $data = \app\test\model\News::paginate(6);

//        return  show(200,'查询成功',$data);
        return view('news/show',compact('data'));
    }

    /**
     * 新闻添加表单
     */
    public function addForm()
    {
//        $data = \app\test\model\News::with('category')
//            ->where('news.category_id = category.id')
//            ->select();
//        var_dump($data);die();

        return view('news/addform');
    }


    /**
     * 表单提交功能
     */
    public function addDo()
    {
        //判断一下提交类型
        if ($this->request->isPost()) {

            //1.获取一下提交的数据,包括上传文件
            $data = $this->request->param(true);


            //2获取一下上传的文件对象
            $file = $this->request->file('thumbnail_pic_s');

//            //内置验证
//            $rule = [
//                'title'           =>  'require',
//                'author_name'     =>  'require',
//                'thumbnail_pic_s' =>  'require ',
//            ];
//
//            $validateRes = $this->validate($rule,$data);
//
//            if ($validateRes !== null){
//                return $this->error('验证失败,无法添加');
//            }

            //3判断是否获取到了文件
            if (empty($file)) {
                $this->error($file->getError());
            }

            //4上传文件
            $map = [
                'ext'=>'jpg,png',
                'size'=> 3000000
            ];
            $info = $file->validate($map)->move(ROOT_PATH.'public/uploads/');
            if (is_null($info)){
                $this->error($file->getError());
            }

            //5向表中新增数据
            $data['thumbnail_pic_s'] = 'uploads/' . $info -> getSaveName();

            $res = \app\test\model\News::create($data,true);

            //6判断新增是否成功
            if (is_null($res)){
                $this->error('新增失败');
            }

            $this->success('新增成功~~');

        }else {
            $this -> error('请求类型错误~~');
        }
    }

    /**
     * 软删除新闻
     */
    public function del($id)
    {

        $data = \app\test\model\News::delData($id);
    }



    /**
     * 修改页面
     */
    public function updateDetail($id)
    {

        $data = \app\test\model\News::find($id);

        return view('news/update_detail',compact('data'));
    }


    /**
     * 表单修改功能
     */
    public function saveDo()
    {
        $params = input();

        //内置验证


        $saveRes = \app\test\model\News::update($params,true);

        if ($saveRes){
            return $this->success('成功了哦,棒棒哒!!!么么么么么么么么么么哒!','news/showData');
        }else{
            return  $this->error('失败了哦亲亲,再接再厉呀,么么么么么么么么么么哒!');
        }
    }


    /**
     * 使用QueryList采集新闻详情
     */
    public function queryListNewDetail()
    {
        $url = 'https://mini.eastday.com/mobile/210610112811217909069.html';

// 定义采集规则
        $rules = [
            // 采集文章标题
            'title' => ['h1','text'],
            'img'=>['img','src'],
            // 采集文章作者
            'author' => ['.share_cnt_p clearfix>f1 i','text'],
            // 采集文章内容
            'content' => ['p','html'],
        ];
        $rt = QueryList::get($url)->rules($rules)->query()->getData();

        $arr=$rt->all();
        $addRes = Detail::create($arr,true);
    }


    /**
     * 详情查询接口
     */
    public function apiDetail($id)
    {
        $data = Detail::where('id',$id)->find();

        return show(200,'',$data);
    }
}

 

 

接下来是模型层中的代码

 

 

<?php

namespace app\test\model;

use think\Model;
use app\test\model\Category;
use \traits\model\SoftDelete;
class News extends Model
{
    use SoftDelete;
    //入库
    public static function addNews($data)
    {
//        print_r($data);die();
        //查询出id分类
        $categoryID = Category::where('category_name','=',$data[0]['category'])
                ->value('id');

        if (empty($category)){
            $res = Category::create([
                'category_name' => $data[0]['category']
            ]);
            //取出分类id
            $categoryID = $res->id;
        }
        foreach ($data as &$value){
            $value['category_id'] = $categoryID;
            $value['puddate']  = strtotime($value['date']);
            $value['news_url'] = strtotime($value['url']);
            unset($value['uniquekey']);
            unset($value['date']);
            unset($value['category']);
            unset($value['news_url']);
        }

        $res = (new News())->saveAll($data,true);
    }

    public function category()
    {
        return $this->hasMany('Category','category_id','t_id');
    }


    public static function delData($id)
    {
        News::destroy($id);
    }


}

若是大家有什么不会的可以私信我,一起交流哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悄悄顽皮的猴头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值