Holen Lehre Beziehungen in DQL
-
30-09-2019 - |
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?
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