Valeur renvoyée par Laravel DB :: transaction ()

C'est ma première fois d'utiliser DB::transaction() mais exactement comment ça fonctionne que si la transaction échoue ou réussit? Dans l'exemple ci-dessous, dois-je attribuer manuellement une valeur de retour trueou si elle ne sera que la méthode soit de retour false ou totalement sortie de la transaction (donc en ignorant le reste du code)? Les docs ne sont pas si utiles sur ce.

use Exception;
use DB;

try {
    $success = DB::transaction(function() {
        //Run some queries
    });

    print_r($success);

} catch(Exception $e) {
    echo 'Uh oh.';
}

Solution

J'ai écrit cette solution pour les autres, qui peut-être vous demandez-vous.

Depuis que j'ai été plus préoccupés par renvoyant une valeur booléenne en fonction de la réussite de ma requête, avec quelques modifications, il revient maintenant true/false en fonction de son succès:

use Exception;
use DB;

try {
  $exception = DB::transaction(function() {
    //Run queries here
  });

  return is_null($exception) ? true : $exception;

} catch(Exception $e) {
    return false;
}

Prendre note que la variable $exception n'est jamais retourné depuis si quelque chose va mal avec votre requête, la catch est immédiatement déclenchée retour false. Grâce à @ilaijin pour montrer qu'une Exception objet est levée si quelque chose va mal.

source d'informationauteur enchance