Frage

Ich habe drei Tabellen:

Project:
  ...
  relations:
    User:
      local: authorId
      foreign: id
    Users:
      class: User
      local: projectId
      foreign: userId
      refClass: UserProjects

User:
  ...
  relations:
    Projects:
      class: Project
      local: userId
      foreign: projectId
      refClass: UserProjects

UserProjects:
  columns:
      id:
        type: integer
        primary: true
        autoincrement: true
      userId: integer
      projectId: integer

Was würde Ich mag zu tun ist, eine DQL Anweisung schreiben, die Projekte zurückzukehren, die ein Benutzer zugeordnet ist. Ich versuche, die folgenden zu emulieren:

SELECT p.* 
FROM user_projects AS up
LEFT JOIN project AS p ON up.projectid = p.id
LEFT JOIN user AS u ON up.userid = u.id
WHERE u.id = 1

Beim Lesen durch die Lehre Anweisungen kam ich mit dem Follow-up (u * ist dort, weil es über u klagte nicht in der select-Anweisung verwendet wird.):

$q = Doctrine_Query::create()
  ->from('Model_User u')
  ->select('u.*, p.*')
  ->leftJoin('u.Projects p');
$result = $q->execute();

Was es gibt ist allerdings ein Datensatz ein einzelnes Model_User Objekt mit einer ‚Projekten‘ Eigenschaft ausgefüllt mit den dazugehörigen Projekten enthalten. Ich möchte nur die Projekte, wenn möglich zurück haben, aber ich kann nicht auf das herauszufinden scheinen. Ist es möglich?

War es hilfreich?

Lösung

hatte ich meine Beziehungen falsch. Ich hatte folgende zu tun und ich war in der Lage Lehre zu haben automatisch korrekte Beziehungen aufzubauen, ohne DQL zu verwenden (so konnte ich gehen $ user-> UserProjects oder $ Ausbau-> UserProjects)

Project:
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    ...
    authorId: integer
    ...
  relations:
    User:
      local: authorId
      foreign: id
    Users:
      foreignAlias: Projects
      class: User
      refClass: UserProjects

User:
  columns:
    id:
      type: integer
      primary: true
      autoincrement: true
    ...

UserProjects:
  columns:
      id:
        type: integer
        primary: true
        autoincrement: true
      user_id: integer
      project_id: integer
  relations:
    Project:
      foreignAlias: UserProjects
    User:
      foreignAlias: UserProjects
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top