2017-07-20 1 views
0

je la structure de base de données suivante:Laravel - plusieurs modèles dans un contrôleur

Enquiries

id

total_widgets

TOTAL_AMOUNT

CUSTOMER_ID

Customers

id,

prenom,

last_name

En utilisant le formulaire lorsque vous créez une enquête sur vous pouvez entrer les données clients dans la section et cela stocker en utilisant firstOrCreate, puis obtenir le id afin de lier à Enquiry au Customer

Maintenant, le problème est que tout cela est fait dans la méthode store dans le contrôleur Customers, comme ce qui suit:

public function store(Request $request) 
{ 
    $rules = array(
     "first_name" => "required", 
     "last_name" => "required", 
     "total_widgets" => "required" 
    ); 

    // Handle validation 

    // Create customer 
    $customer = \App\Customers::firstOrCreate(['first_name' => $request- 
       >get('first_name')]); 

    $enquiry = new \App\Enquiries(); 
    $enquiry->customer_id = $customer->id; 
    $enquiry->save(); 

} 

Le problème avec le faire comme ceci est que ce n'est pas séparé et si le processus de création d'un client change, alors je devrais changer cela beaucoup de fois. (Chaque fois que j'ai une section qui nécessite un client) ..

Y at-il une meilleure façon de le faire? Par exemple, le client doit-il être créé séparément, puis l'ID est passé dans le $request?

Répondre

0

Une autre façon de le faire est la suivante:

1) Dans les enquêtes forment sur le bouton Ajouter appelé « Ajouter un nouveau client ».

2) Lorsque vous cliquez sur ce bouton, un modal apparaît, puis remplissez les détails cliquez sur soumettre.

3) En cliquant sur soumettre, faites un appel ajax à Customercontroller et insérez les données puis renvoyez le dernier identifiant inséré.

4) Maintenant, vous pouvez voir le nouvel utilisateur dans la liste déroulante (Il y aura un menu déroulant pour sélectionner l'utilisateur) du formulaire de requête, sélectionnez-le, puis appuyez sur Soumettre.

5) Il sera transmis au contrôleur de recherche et stocké.

J'espère que cela vous aidera.