2017-07-25 1 views
0

J'ai deux modèles, Card et Expense. Les deux ont un champ type. Chaque fois que j'ajoute une nouvelle dépense, j'ai une liste déroulante dans le formulaire pour sélectionner un Card. Ils sont liés par une relation belongsTo.Laravel mutator ou création événement

La chose est, je veux définir automatiquement le champ type de mes dépenses au même que le type de ma carte. Je ne veux pas avoir une autre liste déroulante pour type dans mon formulaire de dépenses. De plus, je veux continuer à utiliser ce qui suit sur ma méthode store sur mon contrôleur de dépenses:

auth()->user()->expenses()->create($request->all()); 

Je pense que cela devrait être possible en utilisant un mutator peut-être dans le modèle, mais je ne suis pas tout à fait sûr comment aborder ce.

Donc en bref, ce que j'ai besoin est, lors de la création d'une nouvelle Expense, j'ai besoin le champ type à saisir de la Card liée, puis inséré dans le champ Expense type.

Ce que je ne veux pas faire dans mon contrôleur, est quelque chose comme:

$expense = new Expense; 
$expense->name = ... And so on 

Répondre

1

Si vous souhaitez utiliser type à partir du modèle de la carte, vous pouvez faire quelque chose comme ceci:

$card = Card::find(1); 
$card->expenses()->create(array_merge($request->all(), ['type' => $card->type])); 

Mais ce n'est pas une bonne idée de dupliquer type si vous en avez déjà un dans le modèle Card et que Expense appartient à Card.

+0

Merci, et oui je pensais à la meilleure solution pour mon application, donc je vais probablement devoir repenser cela, mais pour l'instant, cela devrait le faire, merci :) – Hardist