2017-04-22 41 views
2

如何訂購Laravel高到低,從低到高的產品 - 通過此代碼的價格?我把它全部用於默認的演示文稿,但我想添加2個鏈接來製作低調的字符串,所以只有當我點擊它們時,產品纔會按照從高到低或從低到高的順序排列 - 其他明智的選擇時不會點擊任何鏈接默認情況下,下令 - DESC或ASC 這是代碼按順序:模擬控制器HTML:如何在Laravel從高到低,從低到高的產品訂購 - 通過此代碼的價格?

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 

回答

0

可以使用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']; 
    }); 
} 
0

你可能想考慮不要將$products轉換爲數組,而是將其保留爲一個集合。這樣,您可以使用Laravel的sortBy()方法以清晰的方式對收集進行分類。

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

查看文檔在這裏:Collections/sortBy()