Şimdi bir süredir beynimi bozuyorum. Doktrinde doğru katılma kavramı yoktur. Sol bir birleştirmeyi doğru birleştirme gibi kullanabileceğinizi biliyorum, ama örnek olarak bunu anlayamıyorum, bu yüzden buradayım.Doctrine 'de sağa birleşme gibi birleştirme nasıl kullanılır
Örneğim: Doktrinde, kendisiyle "ebeveyn" adı verilen bire bir ilişkisi olan bir varlığım var. Tüm varlıkları ve çocuklarını (varsa) çoğaltmaları olmadan almaya çalışıyorum. bir hak ile
diyorum çünkü bu basit katılmak:SELECT parent.*, child.*
FROM table child
RIGHT JOIN table parent ON parent.id = child.parent_id
WHERE parent.parent_id is null;
Ama bir sol kullanılarak ben hüküm olması gereken yerde onları filtrelemek için anlamaya olamaz sonuç vermedi am katılmak.
Bu yüzden sorum şu: "Doktrin doğru katılımın bir yolu var mı" veya "Sol birleştirme işlemini doğru birleştirme gibi nasıl kullanabilirim"?
--- DÜZENLEME ---
Sizler ben seçim tabloları sıralamasını değiştirme hakkında neler söylediğini doğru ama ilişki çocuk-> ebeveyn yapar bu yüzden Doctrine kullanıyorum.
Benim Varlık:
/**
* @Entity
* @Table(name="entity")
*/
class Entity
{
...
/**
* @OneToOne(
* targetEntity="Entity",
* fetch="EAGER"
*)
* @JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
...
}
Öğretişim select ifadesi:
$em->createQueryBuilder()
->select(array('child', 'parent'))
->from('Entity', 'child')
->leftjoin('child.parent', 'parent')
->orderBy('parent.id','asc')
->getQuery()
->execute();
Ben tabloları sipariş geçebilirsiniz nasıl ve EĞER emin değilim İşte benim doktrin sorgusu olur. Ayrıca, varlıktan kendisine (ebeveynim gibi) başka bir ilişki kurmaya çalıştım ama çocuk dedim. Fakat db'yi yeni şema doktrini ile güncellediğimde hatalar attı.
Herhangi bir fikrin var mı? Ve hızlı cevaplar için teşekkürler!
--- DÜZENLEME 2 ---
Sol katılmak sql ve sonuçları:
SELECT child.id, child.changed_timestamp, child.parent_entity_id, parent.id,
parent.changed_timestamp, parent.parent_entity_id
FROM content child
LEFT JOIN content parent ON child.parent_entity_id = parent.id
ORDER BY parent.id ASC
child_id child_timestamp parent_entity_id parent_id parent_timestamp parent_entity_id
1 8/16/12 20:29 NULL NULL NULL NULL
7 9/20/12 16:07 NULL NULL NULL NULL
8 8/17/12 16:08 NULL NULL NULL NULL
9 8/17/12 20:44 NULL NULL NULL NULL
10 8/17/12 21:03 NULL NULL NULL NULL
11 8/17/12 21:17 NULL NULL NULL NULL
194 9/19/12 9:58 NULL NULL NULL NULL
195 9/20/12 10:38 NULL NULL NULL NULL
196 9/19/12 11:58 NULL NULL NULL NULL
197 NULL 196 196 9/19/12 11:58 NULL
200 9/20/12 16:02 1 1 8/16/12 20:29 NULL
202 9/20/12 16:35 NULL NULL NULL NULL
204 9/21/12 8:41 NULL NULL NULL NULL
206 NULL 204 204 9/21/12 8:41 NULL
Sağ katılmak sonuçları:
SELECT child.id, child.changed_timestamp, child.parent_entity_id, parent.id,
parent.changed_timestamp, parent.parent_entity_id
FROM content child
RIGHT JOIN content parent ON child.parent_entity_id = parent.id
WHERE parent.parent_entity_id is null
ORDER BY parent.id ASC
child_id child_timestamp parent_entity_id parent_id parent_timestamp parent_entity_id
200 9/20/12 16:02 1 1 8/16/12 20:29 NULL
NULL NULL NULL 7 9/20/12 16:07 NULL
NULL NULL NULL 8 8/17/12 16:08 NULL
NULL NULL NULL 9 8/17/12 20:44 NULL
NULL NULL NULL 10 8/17/12 21:03 NULL
NULL NULL NULL 11 8/17/12 21:17 NULL
NULL NULL NULL 194 9/19/12 9:58 NULL
NULL NULL NULL 195 9/20/12 10:38 NULL
197 NULL 196 196 9/19/12 11:58 NULL
NULL NULL NULL 202 9/20/12 16:35 NULL
206 NULL 204 204 9/21/12 8:41 NULL
Ben sağ katılmak ile sonuçlar elde etmek istiyorum sql. Birbirine bağlı çocuklarıyla birlikte olan ebeveyn ebeveyn varlıkları (eğer varsa) ama bunu doktrini kullanarak elde etmeliyim. Tekrar teşekkürler!
'child DOĞRU JOIN tableparent ON parent.id = child.parent_id'," tableparent SOL JOIN child ON parent.id = child.parent_id "ile aynıdır. –
Lütfen örnek verileri ve istenen çıktıyı sağlayın. – RedFilter
Eklendi :) Teşekkürler! –