2014-05-21 2 views
-1

J'ai un enregistrement polymorphe que je veux créer.Résumé d'une 'sauvegarde' polymorphe sur un modèle

Cela fonctionne

$user->logs()->create(['message' => 'message', 'failed' => false]); 

Mais comment puis-je convertir en quelque chose comme ceci:

$user->logs()->logSuccess('message'); 

Dans mes journaux de classe modèle j'ai essayé ceci:

public function scopeLogSuccess($query, $message) 
{ 
    $this->create(['message' => $message, 'failed' => false]); 
} 

Mais rien ne se passe . La requête s'exécute - mais aucune donnée n'est insérée dans la base de données et aucune erreur n'est générée.

J'ai aussi essayé ceci:

public function scopeLogSuccess($query, $message) 
{ 
    $this->message = $message; 
    $this->failed = false; 
    $this->save(); 
} 

Un « record » est enregistré dans la table de journaux - mais il ne marche pas avoir la « loggable_id » ou « loggable_type » qui devrait être généré sur une relation polymorphes - ils sont juste vide.

+0

Elaborer sur "Mais aucun ne semble fonctionner?" - des erreurs ou des résultats inattendus? – Andreas

+0

Désolé - question mise à jour avec des informations supplémentaires. – Laurence

+0

lol ... pourquoi quelqu'un a-t-il rejeté cette question? Cela me semble une question valide ... – Laurence

Répondre

1

Vous auriez besoin d'étendre la classe MorphTo et d'ajouter vos méthodes personnalisées - Je ne vois pas un moyen facile d'y parvenir. Je recommande d'ajouter simplement la méthode logSuccess etc sur votre modèle d'utilisateur.

+0

Hmmm ... mais alors je devrais mais connectez-vous à mes autres modèles qui enregistrent aussi les journaux ... – Laurence

+0

... ou peut-être que je fais un trait Loggable ou quelque chose - et attachez cela aux modèles loggables ... – Laurence

+0

Un trait serait une bonne idée de partager ce comportement, oui. – Andreas

Questions connexes