Dans un premier temps, je pense que tu aurais intérêt à poser les bases d'un bon travail sous symfony, un schema conforme aux normes symfony, doctrine. Ce n'est pas indispensable, mais c'est plus simple à utiliser et tous le monde comprend mieux de quoi tu parle.
Par exemple, tu parles d'un iduser dans la table user, la norme voudrait que la clef par défaut soit id. Ce qui permet de récupérer l'Id par $user->getId() plus clair et léger que $user->getUserId().
Et surtout, symphony va comprendre que tu parles d'une clef primaire et l'utiliser là où tu oublierais de la déclarer.
De la même manière, pour un champ lier, le nom standard serait dans la table contact pour un user serait user_id. Si tes liaisons sont correctement configurée, tu vas récupérer l'id du user en contact par $contact->getUserId(), mais surtout tu vas récupérer l'objet user par $contact->getUser() et pour un user, la collection des contact par $user->getContacts().
A condition que ton schema soit correctement défini.
Pour en venir à ta question, l'affichage d'un objet par défaut (si tu ne précise pas de nom de méthode) utilise le return de la méthode __toString().
Par contre, dans l'action edit, tu vas généralement utiliser un objet form alors que l'action show ce contente d'afficher sans "intelligence". Donc, si ton schéma est correcte, dans le show, tu vas récupérer le nom de l'utilisateur d'un contact par echo $contact->getUser(). Si le schéma est conforme et les relations correctement définies et la méthode __toString() correcte.
Attention, ta méthode présente un danger. En effet, tu retourne
return $this->getLastname().' '.$this->getFirstname();
fondamentalement juste, mais si un des deux champs est vide (null), la concaténation va retourner une chaine vide. L'écriture suivante :
return "$this->getLastname() $this->getFirstname()";
permet d'éviter le problème.
Partager