如何在Laravel的各个领域订购

时间:2013-10-24 08:17:46

标签: mysql laravel

我在视图表中为MYSQL中的产品做了一些计算,所以我列出了这些id作为产品参考ID。

$referenceIds = viewTable::orderBy('score', 'DESC')->lists('product_id');

我想从这些参考ID中获取产品。

$products = Product::whereIn('id', $rederenceIds);

产品内容正确,但订单错误,如何通过引用ID加载产品订单,我知道我可以使用ORDER BY FIELD(id,' . $fields . ')在MySQL中完成,但我想找出Laravel方式,并且希望不要使用ORDER BY FIELD命令,因为它似乎浪费了很多数据库效率。

2 个答案:

答案 0 :(得分:11)

你必须注入一些原始的sql,但它并不是一场噩梦:

$referenceIds = viewTable::orderBy('score', 'DESC')->lists('product_id');
$referenceIdsStr = implode(',', $referenceIds);
$products = Product::whereIn('id', $rederenceIds)->orderByRaw(DB::raw("FIELD(product_id, $referenceIdsStr)"))->get()->all();

答案 1 :(得分:0)

不确定我是否完全理解这一点,但如果您想订购产品,则应使用

$referenceIds = viewTable::lists('product_id');

$ordered_products = Product::whereIn('id', $rederenceIds)->orderBy('id', 'DESC')->get();