찾다

 >  Q&A  >  본문

가격별로 제품을 오름차순으로 정렬하는 방법

<p>가격별 오름차순으로 제품을 정렬하는 방법입니다. 가격은 모델 제품에서 가져온 가격에 모델 팩에서 가져온 볼륨을 곱하여 계산됩니다. Laravel에서 모든 제품의 가격을 표시하는 방법입니다. </p> <pre class="brush:php;toolbar:false;">ceil( ( $product->팩->count() > ? $product->팩->sortBy('pivot.add_time')->first()->볼륨 : 1 ) * $제품->가격 )</pre> <p>이 코드를 사용해 보았으나 오류가 발생했습니다. </p> <인용문> <p>정의되지 않은 속성: IlluminateDatabaseQueryBuilder::$pack</p> </인용문> <pre class="lang-php Prettyprint-override"><code>if ($request->get('sort') == 'sort-price_desc') { $products = 제품::orderBy( 함수($제품) { 천장 반환( ($product->packs->count() > 0 ? $product->팩->sortBy('pivot.add_time')->first()->볼륨 : 1) * $제품->가격 ); } )->get(); }<span style="font-family:'sans serif, tahoma, verdana, helvetica';"><span style="white-space:nowrap;"> </span></span> <p><br /></p>
P粉781235689P粉781235689500일 전657

모든 응답(1)나는 대답할 것이다

  • P粉928591383

    P粉9285913832023-08-01 00:26:47

    Laravel의 Eloquent ORM의 orderBy 메소드는 대체 기능을 지원하지 않으므로 코드가 올바르지 않습니다. 대신 열 이름과 정렬 방향(오름차순 또는 내림차순)을 인수로 예상합니다. 귀하의 시나리오에서는 orderBy를 사용하여 직접 달성할 수 없는 약간 복잡한 계산 값을 기반으로 제품을 정렬하려고 합니다.

    채택할 수 있는 한 가지 전략은 이 필드를 미리 계산하여 제품 테이블에 저장한 다음 이 필드를 기준으로 정렬하는 것입니다. 또는 제품을 먼저 검색한 다음 메모리에서 정렬할 수도 있습니다.

    메모리에서 이를 수행하는 방법은 다음과 같습니다.


    으아악

    이 코드는 먼저 모든 제품과 관련 포장을 검색합니다. 그런 다음 컬렉션은 사용자가 제공한 계산에 따라 메모리에서 정렬됩니다.

    회신하다
    0
  • 취소회신하다