0
votes

Insertion d'une pièce d'identité d'une autre table pour une relation hasmany - Laravel

La base de données se compose de deux tables; 1 table nommée projet et 1 table nommée Tâches. Un projet peut avoir plusieurs tâches. L'utilisation d'une liste déroulante multi-sélectionner, plusieurs éléments (utilisateurs) peuvent être sélectionnés et via un tableau envoyé à la base de données.

L'insertion de l'utilisateur fonctionne bien, mais l'insertion des identifiants du projet ne fonctionne pas correctement. 'null' est inséré au lieu de l'identifiant, reportez-vous au projet. P>

Je ne peux pas trouver où je manque quelque chose. Merci pour l'aide. P>

Sortie: P>

Route::post('/projects/{project}/tasks',    'ProjectTasksController@store');


0 commentaires

3 Réponses :


1
votes

Remplacez la méthode de la relation avec ci-dessous:

tasse.php strong> p> xxx pré>

typo dans le modèle de projet: p>

Project.PHP strud> p>

public function store(Request $request, $project)
{
$task = new Task();
$data = $request->all();

foreach ($request->get('user') as $user){
    $users[] = [
        'project_id' => $project,
        'user' => $user
    ];
}
dd($users);


5 commentaires

@NEMO Quel est votre nom de tables? et dd the $ Demande-> tout () dans le contrôleur.


Mes noms de table sont des projets et des tâches. J'ai ajouté le résultat de la demande à ma question.


@Nemo est-ce emplacement_name ? Pas utilisateur ? Et ça va à droite route?


Désolé, c'était la sortie d'une autre table. J'ai ajouté la route.


@Nemo S'il vous plaît ajouter des itinéraires.



1
votes

Vous envoyez un identifiant de projet par URL d'action de formulaire, vous devez attraper cela dans la méthode du contrôleur.

<form action="/projects/{{$project->id}}/tasks" method="post" >
@csrf
<div class="form-group">
    <label for="user">New User</label>
    <select multiple class="form-control" id="multiSelect" name="user[]">
        <option value="Jan">Jan</option>
        <option value="Piet">Piet</option>
        <option value="Nele">Nele</option>
        <option value="Tom">Tom</option>
        <option value="Tony">Tony</option>
    </select>
</div>
<div class="form-group">
    <button type="submit" class="btn btn-primary">New user</button>
</div>
</form>


2 commentaires

Je n'ai toujours pas encore autre chose à faire pour pouvoir envoyer le projet_id?


Merci pour l'entrée. Cela m'aide à résoudre le problème.



0
votes

Je l'ai résolu grâce à l'entrée de @nagesh et @jinal. Utilisation de la liaison de modèle d'itinéraire et donnez l'ID avec la fonction Store aussi bien voir CODE:

    public function store(Request $request, Event $event)
{
    $location = new Location();
    $data = $request->all();

    foreach ($request->get('location_name') as $name){
        $names[] = [
            'event_id' => $event->id,
            'location_name' => $name
        ];
    }

    dd($names);


0 commentaires