php
  • laravel
  • eloquent
  • 2017-09-05 2 views 0 likes 
    0

    내 Eloquent 모델의 "업데이트"쿼리가 더 이상 작동하지 않는 오히려 애매한 문제가 발생했습니다.Eloquent Model "UPDATE"Query Failing

    여기에 쿼리 빌더의 :

    $os = OrderShipment::where('order_id', '=', $shipment->orderReferenceNumber)->update(array("api_shipment_id" => $data->shipmentId)); 
    

    이 쿼리는 IF 내부 및 $ shipment-> orderReferenceNumber에 값이 있으면 그렇게에만 실행됩니다 - 그것은 않는다. 이 업데이트 쿼리는 항상 false/0 업데이트 된 행을 반환합니다.

    는 OrderShipment 모델의 내부 나 있습니다

    protected $fillable = [ 
         'api_shipment_id', 
         'order_id', 
         'shipping_method_id' 
    ]; 
    

    그래서 값이 갱신되고 "채울"어레이 내에있다. 나는 또한 'order-id'와 함께 select 문을 사용할 수 있다는 것을 확인하고이를 통해 데이터를 찾을 수 있습니다.하지만 거기에는 주사위가 없습니다. 그러나 MySQL 콘솔 내에서 쿼리를 실행하면 쿼리가 제대로 작동하므로 지금 당장 여기에 머물러 있습니다. 단일 업데이트의

    :

    +0

    아무 것도 수정되지 않으면 수정 된 행이 없기 때문에 false/0을 반환합니다. – user3158900

    +0

    이상한 점은 변수를 삽입하지 않고 '$ shipment-> orderReferenceNumber'대신 수동으로 '1979'를 입력하는 것과 같이 정적 변수를 전달하면 쿼리가 올바르게 작동한다는 것입니다. $ shipment-> orderReferenceNumber가 정의되고 설정되어 있음을 알기에 이것은 단순한 편이다. – lilrobot

    +0

    이미 정의되어 있고 설정 되었습니까? 그리고 이미 존재했던 것과 다른가요? 열쇠는 이미 설정되어있는 것과는 달라야한다는 것입니다. 그렇지 않으면 쿼리 자체가 유효하고 성공적이라하더라도 MySQL은 행을 변경하지 않았다고보고합니다. – user3158900

    답변

    0

    이 해결책을 시도해보십시오

    $os = OrderShipment::where('order_id', $shipment->orderReferenceNumber) 
    $os->api_shipment_id = $data->shipmentId; 
    $os->update(); 
    

    를 들어 대량 업데이트 :

    OrderShipment::where('order_id', $shipment->orderReferenceNumber) 
        ->update(["api_shipment_id" => $data->shipmentId]); 
    

    더 많은 정보에 대한 update

    1

    아래 코드는 여러분을 도울 수 있다고 생각합니다.

    $os = OrderShipment::where('order_id', $shipment->orderReferenceNumber)->update([ "api_shipment_id" => $data->shipmentId ]); 
    
    관련 문제