laravel Eloquent ORM

发布时间:2018-05-29 18:02:44 阅读:1013次

app\models\news.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class News extends Model
{
    protected $fillable = ['title', 'src', 'img_size', 'tab_id', 'is_artificial', 'is_preview'];
    
    /*
     * 定义与 Tab 一对多反向关联
     */
    public function tab() {
        return $this->belongsTo('App\Models\Tab');
    }
    
    /**
     *  定义与 NewsImg 一对多关联
     */
    public function imgs() {
        return $this->hasMany('App\Models\NewsImg');
    }
    /**
     * 定义条件只查询某一天的数据
     * 
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @param string $date
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeInTheDay($query,$date) {
        $query->where('created_at', '>', date('Y-m-d',strtotime($date)));
        $query->where('created_at', '<', date('Y-m-d',strtotime('+1 day',strtotime($date))));
        return $query;
    }
    
    /**
     * 定义条件只查询人工编辑的
     * 
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeArtificial($query) {
        return $query->where('is_artificial', 1);
    }
    
    /**
     * 定义条件排除预览状态的
     * 
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeNoPriview($query) {
        return $query->where('is_preview', 0);
    }
    
    /**
     * 定义条件只查预览状态的
     * 
     * @param \Illuminate\Database\Eloquent\Builder $query
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function scopeIsPriview($query) {
        return $query->where('is_preview', 1);
    }
}

?>

app\http\controllers\newscontroller.php

<?php
public function recommend(Request $request) {
        $pageSize = $request->input('page_size', 10);
        $cacheKey = 'mini_api:news:recommend_'.$request->input('page',1).'_'.$request->input('is_preview',0);
        //获取编辑推荐
        $result = Cache::remember($cacheKey,1,function() use ($request,$pageSize){
            $news = Models\News::where(function($query) use ($request) {
                    //人工编辑 & 推荐栏目 & 当天
                    $query->artificial();
                    $query->where('tab_id', 1);
                    if(!$request->input('is_preview',0)){
                        $query->where('is_preview', 0);
                    }
                    $query->inTheDay(date('Y-m-d'));
                })->orWhere(function($query) {
                    //头条接口推荐数据
                    $query->where('tab_id', 0);
                })->orderBy('is_artificial', 'desc')
                        ->orderBy('id','desc')
                        ->limit($pageSize)->get();
            $news->load('imgs');
            return NewsResoure::collection($news)->toArray($request);
        });
        
        $data = [
            'code' => 0,
            'data' => $result,
            'message' => "数据列表"
        ];
        return response()->json($data);
    }

?>

<?php 

        $taoc_list = Models\Vip_taoc::select('id','taoc_name','valid_time','buy_price')->where('status',0)->where('type',1)->get();

        $userinfo = Models\Smember::select('mobile','icon','icon_list','username','sex','birthday','province','city')->where('mobile','138****0731')->first();

        $user = Models\Smember::where('mobile', $mobile)->first();
        $user->username = $username;
        $user->sex = $sex;
        $user->birthday = $birthday;
        $user->save();

?>

@foreach ($taoc_list as $taoc)
    {{$taoc->taoc_name}}
@endforeach


@foreach ($icon_list as $icon)
    <img src="{{$icon}}" alt="">
@endforeach

@if ($userinfo->sex=='男') checked @endif

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询
上一篇:laravel上传

转载请注明:laravel Eloquent ORM 出自老鄢博客 | 欢迎分享