2016-10-19 3 views
0

테이블에서 가장 자주 발견되는 10 개의 이름을 반환하는 웅변 쿼리가 있습니다.웅변을 사용하여 셀렉션을 업데이트하십시오.

$topPeople = $model 
    ->select(['name', DB::raw('COUNT(*) as count')]) 
    ->groupBy('name') 
    ->orderBy('count', 'desc') 
    ->take(10) 
    ->get(); 

결과를 반환하는 데는 문제가 없지만 데이터를 반환하지 않고 이러한 레코드를 업데이트하려고합니다. get 대신 update를 사용할 때;

$model 
    ->select(['name', DB::raw('COUNT(*) as count')]) 
    ->groupBy('name') 
    ->orderBy('count', 'desc') 
    ->take(10) 
    ->update(['popular' => 1]); 

오류가 발생합니다.

SQLSTATE [42S22] : 열을 찾을 수 없습니다 : 1054 알 수없는 열 '카운트' '주문 절'

이 기록에 popular 필드를 업데이트하는 효율적인 방법은 무엇에?

답변

2

ID를 선택하고 ID를 사용하여 업데이트를 수행하십시오. 코드를 사용하는 예가 약간 변경되었습니다.

$topPeople = SomeModel 
    ->select(['id', DB::raw('COUNT(*) as count')]) 
    ->groupBy('id') 
    ->orderBy('count', 'desc') 
    ->take(10) 
    ->pluck('id'); 

SomeModel::whereIn('id', $topPeople)->update(['popular' => 1]); 
+0

! 그게 내가 찾던 기능이었습니다. 덕분에 – myol

+0

도움이 되니 기쁩니다. :) –

관련 문제