问题描述
我如何在我的 Laravel estore 上随机展示产品。
我希望代码选择 10 个随机产品并最好使用 foreach 显示
var original = Chart.defaults.global.legend.onClick;
Chart.defaults.global.legend.onClick = function(e,legendItem) {
/* do custom stuff here */
original.call(this,e,legendItem);
};
这就是我的开发人员的显示方式,但效率不高。那么当我接手这个项目时,我该如何展示产品呢?我尝试了很多方法,但都没有奏效。我还是 laravel 的新手
解决方法
您可以使用 inRandomOrder()
以随机顺序获得 Products
:
$products = Product::inRandomOrder()->take(10)->get();
上面将为您提供 10 个随机 products
,您可以从那里将它们传递到您的视图或任何需要使用随机产品的地方。例如:
public function index()
{
$products = Product::inRandomOrder()->take(10)->get();
return view('products.index',compact('products'));
}
然后在您的 products.view
刀片文件中,您可以像往常一样遍历产品:
@foreach ($products as $product)
<p>{{ $product->name }}</p>
@endforeach
根据您的评论如下:
$latests = Product::where('status','1')->orderBy('id','desc')->take(8)->get();
如果您真正想要的是 10
最近的记录,但顺序是随机的,请使用 Laravel 集合上可用的 shuffle
方法:
$latests = Product::where('status','1')
->orderBy('id','desc')
->take(10)
->get()
->shuffle();
,
在您的控制器中使用 RAND
$products = Product::orderByRaw('RAND()')->take(10)->get();
return view('your.view page',compact('products'));
在视图页面中循环通过@foreach
@foreach ($products as $product)
<p> {!! $product->image!!} </p>
<p> {!! $product->name !!} </p>
//more code here
@endforeach