Wie der Zugriff auf repository-Methoden für ein Unternehmen in symfony2?

Ich komme bei einem problem bitte helfen Sie mir mit ihm. Hier ist die scenarario:

Ich habe eine Entität "Benutzer" und die entsprechende repository "UserRepository" in meiner Einheit gibt es nur getter-und setter-Methoden. Alle benutzerdefinierten Abfragen habe ich geschrieben um UserRepository. Jetzt in meinem UserController, ich bin versucht, Zugriff auf repository-Methoden, die ich bin nicht in der Lage, dies zu tun.
z.B.
Entität " Benutzer:

class User
{
    ...

    public function getId()
    {
        return $this->id;
    }

    public function setId($id)
    {
        return $this->id=$id;
    }
    public function setProperty($property)
    {
        $this->property = $property;
    }


    public function getProperty()
    {
        return $this->property;
    }

    ....

    }
  ?>

UserRepository:

class UserRepository extends EntityRepository
{


    public function findUsersListingById($id)
    {
        $queryBuilder = $this->getEntityManager()->createQueryBuilder();

       $query = $em->createQuery(
                    "SELECT U
                    FROM  UserEntityPathGoesHere
                    WHERE U.id IN (".implode(",", $id).")"
                );

        $users = $query->getResult();

        return $users;
    }

    public function sayHelloWorld(){

        echo ' Hello World';
    }

}
?>

UserController

class UserController
{
 ...


$users=$this->getDoctrine()
        ->getRepository('MyUserEntityPath')
        ->findUsersListingById($ids);

    //now I have multiple users I want to iterate through each user for associating additional data with each user

     foreach($users as $user)
     {
        $temp = array();

        //I am able to access getId method which is  defined in User entity
        $temp['id'] = $user->getId();

        //however I am not able to  access method from UserRepository, I tried something like below which gives me error  call to undefined function sayHelloWorld
        $temp['status'] = $user->sayHelloWorld();

       ....

     }


}

....

Wie kann ich access repository-Methoden für ein Unternehmen? Ist es möglich ? Wenn nicht, dann was sind die alternativen für die Lösung?

  • Ich sich der Tatsache bewusst entity-und repository-brauchen nicht zu wissen, jeder andere, ich versuche nur, um Zugriff auf repository-Methoden
  • Nein. Sie keinen Zugriff auf repository-Methoden direkt aus Ihrer Entität. Es gibt keine direkte Verbindung zwischen den beiden. Die sayHelloWold Methode in der entity selbst. Oder Sie übergeben ein Unternehmen es: $userRepository->sayHelloWorld($user);
  • vielen Dank für Ihre Gedanken, ich bin in der Lage, call-repository-Methoden durch die übergabe Unternehmens selbst, aber ich Frage mich, ist dies der geeignete Weg, es zu tun? gibt es irgendeine andere alternative, wie die Erstellung von service, der Methoden aktuell halten, indem UserRepository? Ich denke zum erstellen von Dienst-eher vorbei Entität auf jede Methode im repositoy
  • Ich habe Methoden für die Iteration einer Benutzer-Entität entweder einen controller oder eine Vorlage.
  • Ich habe $em>getRepository('AcmeDemoBundle:User')->findById(array(1,2,3,4,5)); fetch mehrere Benutzer.eine Jedoch für meine Hauptsorge, wie @cerad erwähnt in seinem Kommentar ist es nicht mehr möglich direkt auf repository-Methoden, die ich versuchte zu erreichen
InformationsquelleAutor Rahul | 2014-07-12
Schreibe einen Kommentar