Laravel - Comparer les tableaux et les mettre à jour si les données sont différentes

Voici le déroulement: - je sélectionner jusqu'à 5 étudiants dans une liste et cliquez sur le bouton "Générer la Formation de la touche"".
Puis-je enregistrer la session d'un tableau des élèves sélectionnés.
Dans l'écran suivant, j'ai récupérer ce tableau et afficher une liste avec une case appelée "Assisté" où vous pouvez sélectionner si l'étudiant est allé à la formation ou pas. En cliquant sur le "Dossier de Formation" bouton je dois mettre à jour les étudiants qui assistent à la formation. So far So good.
Le problème est, je ne peux pas mettre à jour le tableau d'origine qui contient tous les élèves. Par exemple, si 5 étudiants ont été sélectionnés, mais seulement 3 ont participé à la formation, je devrais mettre à jour la formation de ces étudiants dans la base de données et mettre à jour le tableau d'origine, en conservant les données qui n'a pas changé avec les données qui ont été modifiées.
Le code ci-dessous montre comment je suis en train de mettre à jour le tableau principal (avec tous les étudiants sélectionnés). Le code est commenté, y compris les erreurs qui apparaissent:

// dd($ar_student); //ARRAY WITH STUDENTS WHO ENJOYED TRAINING
    // dd($all_students);//ARRAY WITH ALL SELECTED STUDENTS (MAY BE FROM 1 TO 5)
    foreach($all_students as $item1){//I GO ARRAY TO ALL STUDENTS
        foreach($ar_student as $item2){//I GO TO ARRAY THE STUDENTS ATTENDING
            // dd($item1->student_id);
            if($item1->student_id == $item2->student_id){//IF IDS ARE EQUAL
                // dd($item2);
                $all_students->fase_id = $item2->fase_id;//UPDATE ARRAY WITH ALL STUDENTS (REALLY I NEED TO UPDATE STUDENT PHASE ONLY). ERROR AT THIS LINE: Attempt to assign property of non-object
            }
        }
    }
    $students = $all_students;
    //dd($all_students);

enter image description here

+1
2019-09-18 13:54:48
source
3 réponses

Cela se produit parce que .* est gourmand. Il va consommer autant de caractères qu'il peut, y compris tout fermé entre parenthèses, il peut se trouver le long du chemin.

Pour résoudre ce problème, utiliser [^)]* pour dire regex que vous êtes en excluant explicitement le ) caractères à partir de la liste des personnages que vous voulez capturer.

La démo.

+1
2019-09-18 14:14:47

Votre modèle de \[\]\(((?s).*)\) premier match de []( et utilise ensuite une ligne de modificateur de (?s) qui permettra de faire le point correspondre à un retour à la ligne afin de .* le match jusqu'à la fin et puis revenir en arrière jusqu'à ce que le dernier de )

Vous pouvez utiliser un démenti de la classe de caractères correspondant au lieu de l'ouverture de la parenthèse ( jusqu'à ce que la première parenthèse fermante ).

!\[\]\([^)]+\)
  • ! Match littéralement si vous aussi vous voulez faire correspondre qu'
  • 0.000000e+0 Match de []
  • 0.000000e+0 Match de (
  • [^)]+ le Match 1+ temps de tout caractère à l'exception de ) qui correspond également à un retour à la ligne
  • 0.000000e+0 Match de )

regex démo

+1
2019-09-18 14:14:47

Dymola écrit les résultats de la simulation pour le répertoire de travail. Utiliser cd pour le changer.

Si vous utilisez openModel pour charger d'autres modèles, sachez qu'il change le répertoire de travail avec les paramètres par défaut. Ensemble changeDirectory=False pour l'en empêcher.

Vous pouvez faire la Dymola GUI visible lors de l'écriture du code python, qui doit effectuer un débogage plus facile.

Voici un exemple minimal qui commence Dymola avec la fenêtre visible, change le répertoire de travail et de simuler un modèle. L' .tapis de fichier sera écrit à C:/tmp/dymola:

dymola = DymolaInterface(showwindow=True)
dymola.cd("C:/tmp/dymola")   
dymola.openModel("C:/path/to/some-package.mo", changeDirectory=False)
dymola.simulateModel("someModel")

Comme alternative, vous pouvez définir le chemin d'accès au fichier de sortie lorsque vous appelez simulateModel. Avec le code suivant Dymola permettra de créer de la de la my-result.mat à C:/tmp:

dymola.simulateModel("someModel", resultFile="C:/tmp/my-result")
+1
2019-09-18 14:28:32

Voir d'autres questions sur les étiquettes