2017-10-14 5 views
0

i besoin de comparer les valeurs de base de données avec les entrées de formulaire ce une partie de mon codePHP comment comparer les entrées de formulaire avec les valeurs de base de données | Laravel

public function update($id, Request $request) 
{ 
    $requestData = $request->all(); 
    $website_info = WebsiteInfos::findOrFail($id); 

     if ($website_info->all() == $request->all()) { 
      Session::flash('alert-info', 'No Change have been made'); 
      return redirect('admin/website_infos'); 

     } else { 

      $website_info->update($requestData); 

      Session::flash('alert-success', 'WebsiteInfos updated!'); 

      return redirect('admin/website_infos'); 

     } 



} 

i besoin de comparer $ request-> tous() avec la valeur db! j'essaie ça! le si est ignoré et toujours me montrer l'alerte de succès

Répondre

0

La façon la plus simple de le faire est de trouver l'enregistrement dans une requête.

$website_info = WebsiteInfos::where([ 
    ['id', '=' ,$id], 
    ['name', '=', $request->name], 
    ['email', '=', $reqest->email] 
])->first(); 

if (count($website_info) > 0) { 
    Session::flash('alert-info', 'No Change have been made'); 
    return redirect('admin/website_infos'); 
} else { 
    $website_info->update($requestData); 
    Session::flash('alert-info', 'No Change have been made'); 
    return redirect('admin/website_infos'); 
} 
+0

Ce look fonctionne pour la première condition mais quand je ai fait changer je reçois cette erreur 'Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Appel à une fonction membre update() sur null' –

+0

pouvez-vous vérifier la mise à jour de la fonction et la valeur de $ requestData? Je pense que vous devez passer des paramètres en fonction de la requête. – parth

+0

'$ website_info = WebsiteInfos :: findOrFail ($ id);' simplement ajouter cette ligne à une autre condition –

0

Je le ferais. L'enregistrement de la base de données ne peut jamais être égal à la demande entrante en raison de la présence de la clé primaire, de la date ou des clés étrangères. Vous devez plumer les valeurs de base de données que vous voulez comparer à la demande comme suit

$db_records =$website_info->pluck(['name', 'url','any_other_field'])->toArray(); 
$incoming_request =$request->all(); //assumes this contains name, url, and any_other_field 

if ($db_records == $incoming_request) { 
      Session::flash('alert-info', 'No Change have been made'); 
      return redirect('admin/website_infos'); 

     } 
+0

i essayez et ne fonctionne pas, i essayer 'dd ($ db_records);' pour vérifier waht je reçois, il me montre le tableau ': 1 [▼ 55318152 => "La Tunisie Louer une voiture" ] ' Tunisie Louer une voiture (WEBSITE_TITLE) 55318152 est la colonne (mobile 1) ' $ db_records = $ website_info-> plumer ('WEBSITE_TITLE', 'mobile1', 'mobile2', 'email', 'adresse') -> toArray(); ' –

+0

Je viens de faire quelques changements' pluck (['nom', 'url', 'any_other_field']) ' –

+0

J'ai eu cette erreur ' ErrorException (E_WARNING) strtolower() s'attend à ce que le paramètre 1 soit string, array donné ' –