입니다. 제 고객은 제품보기 페이지에서 유사한 제품 섹션을 만들도록 요청했습니다. 그는 현재보고있는 제품과 비슷한 가격대의 세 가지 제품을 표시하려고합니다.Laravel 4 Eloquent - 유사 제품 가격은
제품 테이블 (또는 원한다면 웅변 모델)이 있으며이 제품은 여러 가격을 가질 수 있습니다. 하나는 주요 가격으로 표시 할 수 있습니다 (따라서 일대 다 테이블 product_variants가 있습니다. 변형 웅변 모델).
무엇이 문제입니까? 나는 설득력있는 쿼리를 만들고 싶습니다. 즉, 에 가장 근접한 세 가지 제품을 선택할 수 있습니다. 가장 가까운 가격은입니다.
예를 들어 주 가격이 $ 40 인 제품을 보았지만 데이터베이스에는 $ 45, $ 38, $ 37, $ 50, $ 35와 같은 주요 가격의 제품이 있습니다.
$ 38 (2 달러 차이 만), 37 달러 (3 달러 차이 만), 45 달러 또는 35 달러 (5 달러 차이) 중 하나를 가장 가까운 가격으로 보여 주어야합니다.
나는 이것을 할 수 있음을 안다. 그러나 나의 해결책은 (내 머리 속에서) 각면에서 3 개의 제품을 (가격에서 위아래로) 잡아서 더 가까운 쪽을 확인하는 것이다. 가격.
나는 내 작품을 PC에 아니지만, 지금까지이 쿼리 내 마음에 존재하는이 같은
$higher = Product::with(['variants' => function($q) use ($productPrice){
$q->whereMain(1);
$q->where('price', '>=', $productPice);
$q->orderBy('price','asc');
}]->where('id','!=', $productId)->get()->take(3);
뭔가가 높은 제품에 비해 가격 및 저렴한 가격과 유사한 저에게 3 개 제품을 얻을 것이다.
그러나 가장 근사한 일치의 마술은 foreach의 일종으로 발생합니다. 여기서 foreach는 가격의 뺄셈을 확인하고 가장 가까운 것을 저장합니다.
나는 해결책을 좋아하지 않는다. 왜냐하면 제품 견해가 많이 방문 될 수 있기 때문에 시간을 할애 할 수 있기 때문이다. 예, 쿼리를 Redis 캐시 또는 다른 것으로 저장할 수 있지만 여전히 ...
이 세 제품을 더 쉽게 얻을 수있는 방법에 대해 더 잘 알고 있습니까?
감사
이것은 많은 도움이되었습니다. 현재 작동 중입니다. 감사합니다. – marwellt