2017-09-22 1 views
0

이 함수가 첫 번째 앱을 업데이트하지 않고 잠금 상태를 0으로 변경하고 1에 머무르지 않는 이유를 이해할 수 없습니다. 모든 앱이 보류 중 상태로 업데이트되어야합니다. 절은이 같은 결과를 제공하지만 경우에 ID로 응용 프로그램을 업데이트하기위한 테이블() 함수 :Eloquent가 컬렉션의 첫 번째 항목을 업데이트하지 않습니다.

public function updateLockState($stu_id) 
    { 

    $apps = Application::where('stu_id', $stu_id)->get(); 

    $acceptedApps = $apps->whereIn('status', [ 'ACCEPTED_W_SCHOLARSHIP', 'ACCEPTED_WO_SCHOLARSHIP', 'ACCEPTED_BYSTUDENT', 'ACCEPTED_CONDITIONALLY', 'UNDER_REVIEW', 'REGISTERED' ]); 

    if ($acceptedApps->count() == 0) 
    { 
     // This has two apps showing in descending order by rank. 
     $pending_apps = $apps->where('status', 'PENDING')->sortByDesc('rank'); 

     foreach ($pending_apps as $key => $value) 
     { 

      if ($key == 0) 
      { 
       $value->update(['locked' => 0]); 
      } 
      else 
      { 
       $value->update(['locked' => 1]); 
      } 

     } 

    } 

    dd(); 

} 

이 난 DB를 사용하는 것을 시도했다. 이 함수는 인덱스 함수의 첫 번째 행에서 실행됩니다. 즉, 앱과 상호 작용하는 페이지에서 첫 번째 함수가 실행됩니다. 그것은 dd() 또는 exit()로 끝나며 실행을 멈 춥니 다.

편집 : 내가 수동으로 DB에 순위 값을 업데이트 할 때

, 나는이 스크립트를 실행하고 잠금을 업데이트해야하지만이 없습니다. 그것은 다른 모든 응용 프로그램에 대한 첫 번째 응용 프로그램 및 잠금 = 1 잠금 = 0을해야하고 계급에 의해 정렬 애플 리케이션을 DESC 이후, 18 순위와 응용 프로그램은 상단에 있어야 따라서는 잠금 = 0 갱신 후 :

enter image description here

+0

로 시작하는 무엇 오류가 있습니까? – GabMic

+0

오류가 발생하지 않습니다. 그것은 db에서 수동으로 순위 값을 업데이트 할 때 잠금을 업데이트하지 않습니다. – Waleed

답변

0

sortByDesc()는 내림차순으로 정렬하지만 반환하는 새 모음에서 같은 순서로 키를 유지합니다.

그래서도 항상하지 않을 수의 내림차순 순서 수집 $ 키의 첫 번째 항목의 경우 0

사용 :

$pending_apps = $apps->where('status', 'PENDING')->sortByDesc('rank')->values()->all(); 

당신에게 줄 것이다 키가 0

관련 문제