2016-03-27 18 views
1

kullanarak bir kereden fazla güncelleyemiyorum Giriş yöntemini bir giriş jsonu ile (giriş json'unda alanlar mobil, userType, deviceId ve deviceType) çağırıyorum. Bu işlevle yaptığım şey, giriş cep telefonu numarasına sahip bir kullanıcı varsa, cihaz ayrıntıları (deviceId ve deviceType) güncellenmelidir, eğer böyle bir kullanıcı yoksa, yeni bir kullanıcı oluşturulmalı ve tüm detaylar oluşturulmalıdır. veritabanına eklenmiştir. Mevcut durum her iki durumda da iade edilmelidir. Herhangi bir hata varsa geri gönderilir.Birleştirme işlemini Laravel Query Builder

Karşılaştığım sorun, halihazırda var olan bir kullanıcının (yeni bir DeviceId ve deviceType ile) cep telefonu numarasını eklediğimde (gerekirse) kullanıcıyı güncelleştirmesidir. Ama yine de yaptığımda, "Cihaz detaylarını güncelleme hatası." Belirli bir sorgunun ilk kez doğru bir şekilde nasıl çalıştığı, ancak bundan sonra nasıl mümkün olabileceği anlaşılamıyor. Lütfen bana yardım et. Şimdiden teşekkürler.

public function login($data){ 
    $returnData = new \stdClass(); 
    if(empty($data['mobile']) || empty($data['userType'])) { 
     $returnData->response = "error"; 
     $returnData->message = "Insufficient Input"; 

     return json_encode($returnData); 
    } 
    $recd = DB::table('users') 
    ->where('mobile',$data['mobile']) 
    ->where('userType',$data['userType']) 
    ->first(); 

    if(!empty($recd)){//user exists, just return the values 
     if(isset($data['mobile'])){ 
      $updateDeviceDetails = DB::table('users') 
           ->where('mobile',$data['mobile']) 
           ->update(['deviceId'=>$data['deviceId'], 'deviceType'=>$data['deviceType']]); 
     } else { 
      echo "mobile not set."; 
     } 
     if($updateDeviceDetails){ 
      $updatedUser = DB::table('users') 
          ->where('id',$recd->id) 
          ->get(); 
      $returnData->response = "success"; 
      $recd->isNewUser = "0"; 
      $returnData->data = $updatedUser; 

      return json_encode($returnData); 
     } else { 
      $returnData->response = "error"; 
      $returnData->message = "Error updating the device details."; 

      return json_encode($returnData); 
     } 
    } else {//user does not exist, create new user 
     if(empty($data['deviceId']) || empty($data['accessToken']) || empty($data['deviceType'])){ 
      $returnData->response = "error"; 
      $returnData->message = "Insufficient Input"; 
      return json_encode($returnData); 
     } 
     $data['created_at'] = $data['updated_at'] = Carbon::now('Asia/Kolkata'); 
     $data['otp'] = mt_rand(100000, 999999); 
     $data['otpStatus'] = 0; 
     $data['userType'] = 1; 
     //insert new user 
     $newUserId = DB::table('users')->insertGetId($data); 
     if ($newUserId>0) { 

      //get the newly inserted user 
      $newUser = DB::table("users") 
      ->where('id',$newUserId) 
      ->first(); 

      //newUser is the object to be returned 
      $newUser->isNewUser = "1"; 
      $returnData->response = "success"; 
      $returnData->data = $newUser; 
     } else { 
      $returnData->response = "error"; 
      $returnData->message = "Error creating new user."; 
     } 
     return json_encode($returnData); 
    } 
} 

cevap

0

$updateDeviceDetails doğrudur içeren falan demet içinde güncellenir sadece 1. Güncellenecek tüm alanlar için aynı değerleri tekrar ekliyorsak, yanlış geri döner.

Bu tuple zaten var olan değerleri, kendi sütunları için, güncelleme işlevine veriyordum ve bu nedenle $updateDeviceDetails'da doğru olmayacaktı.

İlgili konular