2017-09-19 2 views
2

Je cherche un moyen d'ajouter quelques méthodes personnalisées qui seront utilisées dans tous les modèles. Je peux imaginer 3 façons de le faire:Laravel ajouter une méthode personnalisée pour tous les modèles éloquents

  1. Ajout méthode personnalisée au fichier de classe model.php de principale Eloquent (Je veux éviter de le faire, car cela est un fichier de base)
  2. Création d'une classe de modèle personnalisé avec requis Les méthodes personnalisées, qui s'étendront à la classe Model d'eloquent et tous les modèles du projet s'étendront à la classe du modèle personnalisé.
  3. Ajout d'un trait qui aura mes méthodes et l'inclure dans tous les modèles

Cependant, je veux le faire de manière plus efficace et la meilleure façon possible. Est-ce leur tout autre moyen de le faire? PS J'utilise laravel 5.2 comme un ancien projet.

+8

# 1 est sans aucun doute une mauvaise approche. # 2 et # 3 sont deux bonnes approches. J'utiliserais # 2 si littéralement * tous * les modèles (y compris les modèles futurs que votre application aura jamais) ont besoin de la fonctionnalité supplémentaire, et # 3 si seulement * quelques * d'entre eux le seront. – ceejayoz

+0

merci @ceejayoz :) –

Répondre

1

Sur la base de la discussion de commentaires et d'ajouter mon expérience dans Laravel je vous suggère d'aller soit à l'approche # 2 ou # 3 comme @ceejayoz ont indiqué dans les commentaires

premier est certainement une mauvaise approche que vous besoin de modifier le noyau qui n'est pas du tout une bonne pratique. Deuxième et troisième sont deux bonnes approches. Mais, avant cela, vous devez vérifier vos besoins si littéralement tous les modèles (y compris ceux futurs votre application aura jamais) besoin de la fonctionnalité supplémentaire, mais vous pouvez utiliser des traits pour tous les modèles.

Si j'ai le choix probablement que je vais aller pour des traits sur des modèles personnalisés comme des traits sont relativement simples alors des modèles personnalisés

+0

ne pas faire downvotes si vous avez résolu votre problème ou doute puis postez la réponse appropriée afin que d'autres peuvent obtenir de l'aide de votre question merci :) –

+0

s'il vous plaît accepter la réponse afin que cette question peut être fermé merci :) –