所以我有两个模型Product
和ProductPriceHistories
Product
有很多ProductPriceHistories
,它基本上是一个产品的每日价格。
我有一个小问题,当我尝试找到产品的最低价格时,由于联接找到了产品的多个价格,我返回了相同products
的多个。
这是我的查询:
$products = ProductPriceHistory::orderBy(
'product_price_histories.price',
$request->get('direction')
)
->with('products')
->select('products.*')
->paginate(16);
我已经尝试了各种方法,但基本上我需要根据$request->get('direction')
如果无法在 Eloquent 中做到这一点,我将在 DB:Raw 中做到这一点,但肯定是我不知道如何正确地做到这一点。
您可以在with()
方法中的每个元素中提供一个闭包,您可以在其中订购预先加载的产品,甚至如您所提到的,只获得第一个:
->with(['products' => function($query) use ($request)
{
$query->orderBy('orderByColumn', $request->get('direction'))
->first(); // If you want only the first result
}])
希望这对你有帮助。