怎么写才可以让这段代码更加优雅

麻烦大家请看以下代码
我想让代码变得更加优雅

file

代码附上:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018\11\2 0002
 * Time: 13:02
 */

namespace App\Http\Controllers\Boot;

use App\Http\Requests\StoreArticle;
use App\Models\Article;
use App\Models\ArticleCategory;
use Illuminate\Http\Request;
use Mockery\Exception;

class ArticleController extends CommonController
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index($recover = false, $type = null, $order = null)
    {
        //default article list
        $articles = Article:: with('category')->orderBy('created_at','desc')->paginate(10);

        //if is recover list
        if ($recover == true){
            //count attribute and order
            if ($type !== null && $order !== null){
                $articles = Article::onlyTrashed()->orderBy($type,$order)->paginate(10);
            }else{
                $articles = Article::onlyTrashed()->orderBy('created_at','desc')->paginate(10);
            }

        }else{
            //count attribute and order
            if ($type !== null && $order !== null){
                $articles = Article::with('category')->orderBy($type,$order)->paginate(10);
            }
        }

       return view('boot.article.index', [
           'articles'   => $articles,
           'recover'    => $recover,
           'order'      => $order,
           'type'       => $type,
           ]);
    }

}

多写各路大佬随意回复

JiaHeng
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
leo
最佳答案
$builder = Article::query();
if ($recover) {
    $builder->onlyTrashed();
} else {
    $builder->with('category');
}
if ($type && $order) {
    $builder->orderBy($type, $order);
} else {
    $builder->orderBy('created_at','desc');
}
$articles = $builder->paginate(10);
5年前 评论
讨论数量: 6
leo
$builder = Article::query();
if ($recover) {
    $builder->onlyTrashed();
} else {
    $builder->with('category');
}
if ($type && $order) {
    $builder->orderBy($type, $order);
} else {
    $builder->orderBy('created_at','desc');
}
$articles = $builder->paginate(10);
5年前 评论
JiaHeng

@leo 好的, 多谢大佬

5年前 评论
JiaHeng

@leo 刚从tp转过来, 并且是新手, 还不适应这样操作v-v

5年前 评论
nff93

@JiaHeng 你为啥不原样复制别人的代码?


$articles = Article::query()
->when($recover, function($q) {
    $q->onlyTrashed();
}, function($q) {
    $q->with('category');
})->when($type && $order, function($q) use ($type, $order) {
    $q->orderBy($type, $order);
}, function($q) {
    $q->latest('created_at');
})->paginate(10);
5年前 评论
leo

@JiaHeng 你先搞明白 select() 是干嘛的再说

5年前 评论
JiaHeng

@leo @nff93 不好意思了大佬, 我这段代码是抄错了0.0 我自己找到问题了。 不好意思了大佬们

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!