So rufen Sie die Lehre in einer entity-Klasse mit symfony
Bin mit symfony-framework für meine Anwendung. Und speichern die Datensätze in der Datenbank möchte ich aufrufen, die $this->getDoctrine()->getManager(); Methode in meine entity-Klasse. Aber als ich das Tat, es gab mir die Fehlermeldung:
Call to undefined method getDoctrine(),
Kann jemand mir sagen, was ist der richtige Weg, dies zu tun.
Meine entity-Klasse wird wie:
namespace Acme\SuperbAppBundle\Entität;
use Symfony\Component\DependencyInjection\Container;
use Doctrine\ORM\Mapping as ORM;
class Users
{
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $firstName;
/**
* @var string
*/
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set firstName
*
* @param string $firstName
* @return Users
*/
public function setFirstName($firstName)
{
$this->firstName = $firstName;
return $this;
}
/**
* Get firstName
*
* @return string
*/
public function getFirstName()
{
return $this->firstName;
}
function __construct($firstName){
$this->setFirstName($firstName);
}
function save(){
$em = $this->getDoctrine()->getManager();
$em->persist($create);
$em->flush();
}
}
Und meine controller-Methode ist wie:
public function test(){
$create = new Users('Rajat');
$create->save();
}
InformationsquelleAutor Randhir | 2014-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre save-Methode ist der Versuch zu nennen
$this->getDoctrine();
Wobei
$this
ist die aktuelle Klasse und jeder anderen Klasse erbt. So wie es da steht, deine aktuelle Klasse, Benutzer, standalone, und nicht über einegetDoctrine()
Methode. Wenn Ihre Klasse zur Erweiterung der Controller-Klasse, würde es, Zugang zu dieser Methode:class User extends Controller
Glaube ich, dass diese einfache Lösung funktioniert, obwohl es wahrscheinlich nicht wirklich Sinn für Sie verlängern Controller, da es eine User-Entität, und nicht mit einem Controller. Eine bevorzugte, erweiterte Methode, der wäre zu injizieren, die Lehre service in der User-Klasse.
Ich bevorzuge es zu. Diese Methode ist eine schnelle Lösung für ein unmittelbares problem, das Häufig genug, je nach Umfang des Projekts. Machen code funktionsfähig ist das erste Ziel, so dass es schön ist, die zweite. Randhir kann nur noch seine Anwendung, um zu arbeiten, mit allen Mitteln, und nicht viel über "best practices", auf die ich angeboten eine Lösung, mit der sich ein Wort der Warnung angebracht
Kein problem. Prost!
InformationsquelleAutor Alex
Ok, zunächst Lehre Entitäten :
Handle der Entität, Generierung und Konfiguration
Erklären Sie die Vorgänge auf die setter und Getter.
Wenn Sie wana speichern eines Objekts in Ihrer Einheit gibt es Ihrem Benutzer, Sie haben zwei Möglichkeit, um zu speichern diese user:
Ein:
Sie können entity-manager zu speichern, die Benutzer und das Unternehmen wird Ihnen helfen, zu erstellen Sie das richtige Objekt mit der seters und Getter:
Der andere Weg ist, um diesen Eintrag zu erstellen mit QueryBuilder aber es ist eine schlechte Art und Weise, in Ihrem Fall.
Oh, ich vergaß, bitte löschen Sie die save-Methode in der entity-Lehre-manager bereits umsetzen.
InformationsquelleAutor Mehdi Aïssani
Dem controller wahrscheinlich nicht verlängert
Symfony\Bundle\FrameworkBundle\Controller\Controller
...Sollten Sie controller definiert, wie in diesem Beispiel:
InformationsquelleAutor David Marko
Entity-Klasse nicht erweitert ContainerAware /Controller, so können Sie nicht aufrufen $this->getDoctrine()->getManager(). Ich glaube nicht, dass deine Entity-Klasse muss reichen, um eine Steuerung. Da die entity-Klasse wird eine controller-Instanz, nur weil Sie wollen, um den Zugriff auf die Lehre-manager. Das ist keine gute Praxis. Was Sie tun können, ist zu injizieren Lehre-manager, um Ihre Entity-Klasse-durch-Dienste.
Ich schrieb einen blog vor einigen Wochen über die Injektion container Dienste und den Zugriff auf durch Konstruktor. Können Sie injizieren Lehre entity-manager in der gleichen Weise, die Sie injizieren services container. Sie können werfen Sie einen Blick auf, dass, wenn Sie möchten :- http://anjanasilva.com/blog/injecting-services-in-symfony-2/
Hier ist eine schöne Frage, die Injektion Lehre-manager. Stellen Sie sicher, Lesen Sie die Antwort als gut. :- Symfony 2 EntityManager-injection-in-service
Und noch ein nettes tutorial auf die Injektion benutzerdefinierte repository-manager statt der Injektion der ganze entity-manager. Ich glaube, auch eine gute Lösung. :- http://php-and-symfony.matthiasnoback.nl/2014/05/inject-a-repository-instead-of-an-entity-manager/
Hoffe, das hilft, erhöhen Sie Ihr Verständnis über Symfony 2.
Prost!
Dies ist eine Konstruktive Antwort, die beinhaltet Referenzen aus verschiedenen anderen websites. Alle diese Websites verweist auf die Urheber innerhalb der Inhalte. Sie werden wahrscheinlich wollen, um einen Blick auf diejenigen, die vor dem Sprung zu solchen Schlussfolgerungen. Danke.
die Website-Regeln in Bezug auf anwers streng Staaten bei der Verwendung von links in die Antworten: "Immer zitiere den wichtigsten Teil eine wichtige Verbindung, im Falle der Ziel-Website nicht erreichbar ist oder geht endgültig offline.", siehe: stackoverflow.com/help/how-to-answer scheinen Sie zu sein, in der defensive sind, ob oder nicht, der Autor ist richtig zugeschrieben werden auf diesen Seiten - seltsam, da war das nie in Frage. Ich habe lediglich vorgeschlagen, dass Sie den Inhalt solcher Websites, die für eine vollständige Antwort, in der Fall Sie sind überhaupt nicht erreichbar.
InformationsquelleAutor Anjana Silva