如何按照此代码按价格订购Laravel高到低至高产品的订购



如何按照此代码按价格订购laravel高到低至低的产品 - 低到高产品?我得到了全部用于默认演示文稿,但我想添加2个链接来制作Quesy String默认订购-DESC或ASC这是顺序的代码:模型控制器HTML:

static public function getProducts($url_category, &$data) {
    $data['products'] = [];
    if ($category = Categorie::where('url', '=', $url_category)->first()) {
        $category = $category->toArray();
        $data['title'] = $data['title'] . $category['title'];
        $data['url_category'] = $url_category;
        if ($products = Categorie::find($category['id'])->products) {
            $data['products'] = $products->toArray();
        }
    }
}


function __construct() {
    parent::__construct();
    $this->middleware('adminAuth');
}
public function index() {
    self::$data['products'] = Product::all()->toArray();
    return view('cms.products', self::$data);
}
public function create() {
    self::$data['categories'] = Categorie::all()->toArray();
    return view('cms.add_product', self::$data);
}
public function store(ProductRequest $request) {
    Product::save_new($request);
    return redirect('cms/products');
}
public function show($id) {
    self::$data['product_id'] = $id;
    return view('cms.delete_product', self::$data);
}
public function edit($id) {
    self::$data['categories'] = Categorie::all()->toArray();
    self::$data['product'] = Product::find($id)->toArray();
    return view('cms.edit_product', self::$data);
}
public function update(ProductRequest $request, $id) {
    Product::update_product($request, $id);
    return redirect('cms/products');
}
public function destroy($id) {
    Product::destroy($id);
    Session::flash('sm', $request['title'] . ' has been deleted');
    return redirect('cms/products');
}


@if($products)
<a href='{{url('shop/' . $url_category . '?order=high')}}' class='btn btn-link'>From High to Low</a>|
<a href='{{url('shop/' . $url_category . '?order=low')}}' class='btn btn-link' style='color:purple;'>From Low to High</a>
<div class="row">
    @foreach($products as $row)
    <div class="col-md-6 col-sm-6">
        <h3>{{ $row['title'] }}</h3>
        <p><a href="{{url('shop/'. $url_category . '/' . $row['url'])}}"><img alt="{{ $row['title'] }}" border="0" width="200" height="200" src="{{ asset('images/' . $row['image']) }}"></a></p>
        <p>{!! $row['article'] !!}</p>
        <p><strong>Price on site: </strong>{{ $row['price'] }}$</p>
        <p>
            <a href="{{url('shop/'. $url_category . '/' . $row['url'])}}" class="btn btn-warning">View Product Details</a>
            <input @if( Cart::get($row['id'] )) disabled="disabled" @endif data-id="{{ $row['id'] }}" type="button" class="add-to-cart-btn btn btn-success" value="+ Add To Cart"/>
        </p>
    </div>
    @endforeach
</div>
@else 
<div class="row">
    <div class="col-md-12">
        <p><ans>No Products For This Category...</ans></p>
    </div>
</div>
@endif

您可以在控制器中使用 usort((函数:

$data['products'] = $products->toArray();
if (request()->has('order') {
    usort($data['products'], function($a, $b) {
        return (request('order') == 'high') ? $b['price'] - 
$a['price'] : $a['price'] - $b['price'];
    });
}

您可能需要考虑不要将$products施加到数组中,而是将其保留为集合。这样,您可以使用Laravel的sortBy()方法以清晰的方式对集合进行分类。

// $order can be 'asc' or 'desc', which you determine in your controller
@foreach ($products->sortBy('column', $order) as $row)

请参见文档:collections/sortby((

最新更新