0
votes

Assurez-vous que la variable non existante ne casse pas le code

Je recherche un code dans la base de données, si je le trouve alors je recherche des résultats qui sont connectés à ce code, après tous les statuts de modification de la messagerie instantanée des deux enregistrements et les sauvegent.

Le problème est assez basique, Je ne sais pas comment je devrais valider ces variables pour s'assurer qu'ils ne cassent rien quand ils sont vides. J'étais sûr que cette déclaration si la déclaration fera le travail, mais semble que ce ne sera pas. xxx


1 commentaires

Cela ressemble également à un cas qui aurait pu être géré un peu mieux avec relations :)


3 Réponses :


2
votes

Utilisez vide code> :

$code = self::where('h_id', '=', $id)->first();

if(empty($code)) die(); // handle error however you like

$outcome = Outcome::where('code_id', '', $code->id)->first();

if(empty($outcome)) die(); // handle error however you like

$code->status = 1;
$outcome->status = 1;
$code->save();
$outcome->save();


4 commentaires

Je suggère d'utiliser is_null () au lieu de vide ()


Pourquoi @fitzi? Selon PHP Docs, Vide reviendra vrai si la variable est égale à une chaîne vide, une matrice, 0 entier, 0,0 flotteur, false et null. Ce qui rend ce code parfaitement bien.


Parce que c'est plus explicite. En outre, il n'est pas nécessaire de vérifier quelque chose d'autre que null car premier () renvoie un objet ou null de toute façon.


J'ai utilisé à l'origine isset mais l'a changé comme OP indiqué, ils voulaient "ne rien briser quand ils sont vides".



1
votes

La manière explicite serait de vérifier si la demande de base de données éloquente renvoie null comme le retour de Laravel null si les paramètres donnés n'ont pas pu être trouvés.

Vous aussi. Il faut spécifier le deuxième paramètre si vous vérifiez x = y que vous pouvez faire comme tellement. xxx

après votre résultat, vous Peut simplement vérifier xxx

si la variable n'est pas égale null, le modèle donné avec ce paramètre spécifique a été trouvé.

espère que cela aide.


1 commentaires

C'est correct, on dirait que cela retourne null. Merci



0
votes

Je pense que vos modèles sont dans une relation individuelle. Si tel est le cas, vous pouvez essayer le code ci-dessous

$data = self::with(['outcome'])->whereHas('outcome')->where('h_id', '=', $id)->first();

if($data){
$data->status = 1;
data->outcome->status = 1;
$data->save();
data->outcome->save();}


0 commentaires