2017-02-28 3 views
2

Ich möchte die Benutzertabelle aus der Anforderungstabelle mit Hilfe von Laravel 5 aktualisieren. Bitte schlagen Sie vor, wie dies mit Leichtigkeit durchgeführt werden kann. Ich habe zwei Tabellen Daten und wollen basierte Daten auf Anfrage Tabelle Benutzertabelle aktualisieren, in dem Anforderungstabelle Fremd sm_id hat und Benutzertabelle hat bitte primäre ID vorschlagenAktualisierung der Benutzertabelle aus der Anforderungstabelle mit Laravel 5

Vielen Dank im Voraus

anfordern Daten:

Array (

[0] => Array ([id] => 1 [sm_id] => 1 [field_name] => first_name [value] => G2 [created_at] => 2017-02-27 14:17:35 [updated_at] => 2017-02-24 11:05:03 [deleted_at] =>) 

[1] => Array ([id] => 2 [sm_id] => 4 [field_name] => phone [value] => 123467890 [created_at] => 2017-02-27 16:55:48 [updated_at] => 2017-02-27 11:02:27 [deleted_at] =>) 

[2] => Array ([id] => 3 [sm_id] => 4 [field_name] => first_name [value] => John [created_at] => 2017-02-27 16:55:48 [updated_at] => 2017-02-27 11:02:27 [deleted_at] =>) 

[3] => Array ([id] => 4 [sm_id] => 4 [field_name] => last_name [value] => Hunny [created_at] => 2017-02-27 16:55:48 [updated_at] => 2017-02-27 11:02:27 [deleted_at] =>)) 

User Data: 

Array 
(
    [id] => 4 
    [social_id] => 
    [role_id] => 0 
    [name] => 
    [first_name] => max 
    [last_name] => rony 
    [gender] => male 
    [dob] => 02-02-2017 
    [language] => english 
    [location] => USA 
    [address] => ABCD 
    [email] => [email protected] 
    [phone] => 7894561230 
    [id_proof] => 
    [id_proof_path] => 
    [remember_token] => 
    [provider] => website 
    [biography] => Here is about 
    [approve] => 1 
    [created_at] => 2017-02-22 12:16:56 
    [updated_at] => 2017-02-22 12:16:56 
    [deleted_at] => 
) 


Expected result in user table 

Array 
(
    [id] => 4 
    [social_id] => 
    [role_id] => 0 
    [name] => 
    [first_name] => john 
    [last_name] => Hunny 
    [gender] => male 
    [dob] => 02-02-2017 
    [language] => english 
    [location] => USA 
    [address] => ABCD 
    [email] => [email protected] 
    [phone] => 123467890 
    [id_proof] => 
    [id_proof_path] => 
    [remember_token] => 
    [provider] => website 
    [biography] => Here is about 
    [approve] => 1 
    [created_at] => 2017-02-22 12:16:56 
    [updated_at] => 2017-02-22 12:16:56 
    [deleted_at] => 
) 


Here is my code 

public function verifyInformation($id){ 

     if($id){ 

     $getRequest = request::all()->toArray(); 

     $user = User::where('id', $id)->first()->toArray(); 

     foreach($getRequest as $row=>$value){ 
      foreach($value as $rowKey => $result){ 
        $array_key = array_keys($user); 

        $arrayDiff = array_diff($value, $user); 
        $find = $arrayDiff['field_name']; 


        if(in_array($find, $array_key)){ 
         foreach($array_key as $k => $v){ 

          if($v == $find){ 
          $fieldKey = $v; 
          $fieldValue = $arrayDiff['value']; 

          if($fieldValue){ 

           $user = new User; 
           $user->$fieldKey = $fieldValue; 
           $user->save(); 

           return redirect()->back()->with("status", "Well done!! profile updated successfully"); 
          } 

          } 

         } 
        }  
      } 
     } 


     } 
    } 

Hinweis: Nur Telefon, Vorname und Nachname im erwarteten Ergebnis aktualisiert

Antwort

1

Dieser Code wird ein aktuelles Array zum Speichern und Anzeigen von Werten, die sich geändert haben, bereitstellen. Es sind nur vier Deklarationen, um Dinge einzurichten, gefolgt von einer foreach-Schleife, die eine Bedingungsanweisung enthält, die das Drücken von Daten in das Array befiehlt. Ändern Sie mein Snippet, um Ihrem Zweck zu entsprechen.

Demo

$request_data=array(
    0=>array(
     "id" => 1, 
     "sm_id" => 1, 
     "field_name" => "first_name", 
     "value" => "G2", 
     "created_at" => "2017-02-27 14:17:35", 
     "updated_at" => "2017-02-24 11:05:03", 
     "deleted_at" => ""), 
    1=>array(
     "id" => 2, 
     "sm_id" => 4, 
     "field_name" => "phone", 
     "value" => 123467890, 
     "created_at" => "2017-02-27 16:55:48", 
     "updated_at" => "2017-02-27 11:02:27", 
     "deleted_at" => "" 
    ), 
    2=>array(
     "id" => 3, 
     "sm_id" => 4, 
     "field_name" => "first_name", 
     "value" => "John", 
     "created_at" => "2017-02-27 16:55:48", 
     "updated_at" => "2017-02-27 11:02:27", 
     "deleted_at" => "" 
    ), 
    3=>array(
     "id" => 4, 
     "sm_id" => 4, 
     "field_name" => "last_name", 
     "value" => "Hunny", 
     "created_at" => "2017-02-27 16:55:48", 
     "updated_at" => "2017-02-27 11:02:27", 
     "deleted_at" => "" 
    ) 
); 

$user_data=array(
    "id" => 4, 
    "social_id" => "", 
    "role_id" => 0, 
    "name" => "", 
    "first_name" => "max", 
    "last_name" => "rony", 
    "gender" => "male", 
    "dob" => "02-02-2017", 
    "language" => "english", 
    "location" => "USA", 
    "address" => "ABCD", 
    "email" => "[email protected]", 
    "phone" => "7894561230", 
    "id_proof" => "", 
    "id_proof_path" => "", 
    "remember_token" => "", 
    "provider" => "website", 
    "biography" => "Here is about", 
    "approve" => 1, 
    "created_at" => "2017-02-22 12:16:56", 
    "updated_at" => "2017-02-22 12:16:56", 
    "deleted_at" => "" 
); 

$new_data=$user_data; 
$user_id=$user_data["id"]; // declare target id 
$request_ids=array_column($request_data,"sm_id"); // read sm_id column to array 
$request_indexes=array_keys($request_ids,$user_id); // declare matching indexes 

// loop an subarrays that contain the appropriate sm_id 
foreach(array_intersect_key($request_data,array_flip($request_indexes)) as $row){ 
    // if row contains one of the chosen values, overwrite the original data 
    if(in_array($row["field_name"],array("phone","first_name","last_name"))){ 
     $new_data[$row["field_name"]]=$row["value"]; 
    } 
} 

if($user_data!=$new_data){ 
    echo "Changes to save"; 
}else{ 
    echo "No changes to save"; 
} 
echo "<pre>"; 
var_export($new_data); 
echo "</pre>"; 

Dies ist die Ausgabe:

Changes to save 
array (
    'id' => 4, 
    'social_id' => '', 
    'role_id' => 0, 
    'name' => '', 
    'first_name' => 'John', 
    'last_name' => 'Hunny', 
    'gender' => 'male', 
    'dob' => '02-02-2017', 
    'language' => 'english', 
    'location' => 'USA', 
    'address' => 'ABCD', 
    'email' => '[email protected]', 
    'phone' => 123467890, 
    'id_proof' => '', 
    'id_proof_path' => '', 
    'remember_token' => '', 
    'provider' => 'website', 
    'biography' => 'Here is about', 
    'approve' => 1, 
    'created_at' => '2017-02-22 12:16:56', 
    'updated_at' => '2017-02-22 12:16:56', 
    'deleted_at' => '', 
) 
Verwandte Themen