Programing

테이블에서 마지막 행을 선택하십시오.

lottogame 2020. 7. 9. 08:23
반응형

테이블에서 마지막 행을 선택하십시오.


테이블에 삽입 된 마지막 파일을 검색하고 싶습니다. 메서드 first()가 존재하고 테이블의 첫 번째 파일을 제공하지만 마지막 삽입을 얻는 방법을 모르겠습니다.


지금 주문할 때와 같은 필드를 기준으로 내림차순으로 주문해야합니다. 예를 들어, 업로드가 완료되었을 때 타임 스탬프가있는 경우 이와 같은 작업을 수행 upload_time합니다.

프리 라벨 4

return DB::table('files')->order_by('upload_time', 'desc')->first();

라 라벨 4 이상

return DB::table('files')->orderBy('upload_time', 'desc')->first();

라 라벨 5.7 이상

return DB::table('files')->latest('upload_time')->first();

업로드 시간, 내림차순으로 파일 테이블의 행을 정렬 하고 첫 번째 행을 사용합니다 . 이것이 가장 최근에 업로드 된 파일입니다.


Laravel에서 제공하는 최신 범위를 즉시 사용하십시오.

Model::latest()->first();

그렇게하면 모든 레코드를 검색하지 않습니다. orderBy에 대한 더 좋은 지름길.


Laravel의 기본 ORM 인 Eloquent를 사용하는지 여부는 언급하지 않았습니다. 생성 된 경우 User_at에 의해 User 테이블의 최신 항목을 얻으려면 다음과 같이 할 수 있습니다.

User::orderBy('created_at', 'desc')->first();

먼저 created_at 필드를 기준으로 사용자를 내림차순으로 정렬 한 다음 결과의 첫 번째 레코드를 사용합니다.

그러면 컬렉션이 아닌 User 개체의 인스턴스가 반환됩니다. 물론이 대안을 사용하려면 Eloquent 클래스를 확장하는 User 모델이 있어야합니다. 다소 혼란 스러울 수 있지만 시작하기가 매우 쉽고 ORM이 실제로 도움이 될 수 있습니다.

자세한 내용 은 매우 풍부하고 자세한 공식 문서확인하십시오 .


마지막 레코드 세부 사항을 얻으려면

  1. Model ::all()->last(); 또는
  2. Model ::orderBy('id', 'desc')->first();

마지막 레코드 ID를 얻으려면

  1. Model::all()->last()->id; 또는
  2. Model ::orderBy('id', 'desc')->first()->id;

라 라벨 컬렉션에는 마지막 방법이 있습니다

Model::all() -> last(); // last element 
Model::all() -> last() -> pluck('name'); // extract value from name field. 

이것이 가장 좋은 방법입니다.


이 시도 :

Model::latest()->get();

마지막 레코드 세부 사항을 얻으려면 아래 코드를 사용하십시오.

Model::where('field', 'value')->get()->last()

당신은 당신이 수행 할 때 그냥 Laravel 3, 4 삽입하는 실제 행을 찾는 경우 save또는 create같은 새로운 모델에 대한 조치를 :

$user->save();

-또는-

$user = User::create(array('email' => 'example@gmail.com'));

삽입 된 모델 인스턴스가 리턴되고 방금 작성된 사용자의 프로파일 페이지로 경로 재 지정과 같은 추가 조치에 사용될 수 있습니다.

저용량 시스템에서 마지막으로 삽입 된 레코드 작업을 찾는 것은 거의 항상 작동하지만 동시에 삽입해야하는 경우 잘못된 레코드를 찾기 위해 쿼리를 끝낼 수 있습니다. 이는 여러 테이블을 업데이트해야하는 트랜잭션 시스템에서 실제로 문제가 될 수 있습니다.


어떻게 든 위의 모든 것이 laravel 5.3에서 작동하지 않는 것 같습니다. 그래서 다음을 사용하여 내 자신의 문제를 해결했습니다.

Model::where('user_id', '=', $user_id)->orderBy('created_at', 'desc')->get();

누군가를 구제 할 수 있기를 바랍니다.


테이블에 날짜 필드가 있으면 this ( User::orderBy('created_at', 'desc')->first();)가 가장 좋은 해결책이라고 생각합니다. 그러나 날짜 필드가 없으며 Model ::orderBy('id', 'desc')->first()->id;최상의 해결책입니다.


사용 Model::where('user_id', $user_id)->latest()->get()->first();하면 하나의 레코드 만 반환하고 찾을 수 없으면를 반환 null합니다. 이것이 도움이되기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/16549455/select-last-row-in-the-table

반응형