질문을 삭제하지 말아주세요.!
 
1
0
-1

예를 들어 쿼리로는

UPDATE table_name SET status = 'available' WHERE code in ('a','b','c'...)

이런식으로 eloquent에서 update를 할 수 있는 지 궁금합니다.


대충 $table = Table::whereIn('code',$arr)→get() 해서 $table->save()를 했더니

Method save does not exist. 이런식으로 에러가 나타납니다.


이것도 찾아보니까 레코드 하나밖에는 save가 안된다고 해서 다른 방법을 찾다가 여기에 질문 드립니다.


    CommentAdd your comment...

    3 answers

    1.  
      2
      1
      0

      update구문으로는 처리 어려운가요??

      비지니스 로직을 돌면서 하고싶은 경우라면 배열로 담아서 업데이트 하시면 될듯 합니다.

      https://laravel.kr/docs/5.5/queries#updates

      1. lzao

        답변 감사합니다.

        update로 해결했습니다.

      CommentAdd your comment...
    2.  
      2
      1
      0

      이런식으로 할 수 있을 것 같아요

      Table::whereIn('code',$arr)->update(['status' => 'available']);


      문서보시면 보다 자세히 알 수 있을 것 같네요.

      https://laravel.kr/docs/5.5/eloquent


      ex)

      App\Flight::where('active', 1) ->where('destination', 'San Diego') ->update(['delayed' => 1]);

      1. lzao

        답변 감사합니다.

        update로 해결 했습니다.

      CommentAdd your comment...
    3.  
      1
      0
      -1

      https://github.com/laravel/framework/blob/5.5/src/Illuminate/Database/Query/Builder.php#L1676-L1682

      $table = Table::whereIn('code',$arr)→get() 함수는 \Illuminate\Support\Collection 인스턴스를 리턴한다고 API 문서에 정의되어 있네요. 

      짊문에 남기신 $table->save()는 아래와 같은 상황입니다.

      $table = Collection::make(['foo', 'bar']);
      $table->save();


      익숙하지 않은 API는 항상 프레임워크 코드를 참고하고, 팅커 콘솔에서 실험해 보는 습관을 들이시면 좋겠습니다.

        CommentAdd your comment...