Doctrine 2 varlıklarında, sık sık çalışmak zorunda kalacağım kod içerecek bazı ek işlevler eklemek istiyorum. Örneğin:Doctrine 2 Entity Method'da bir kolaylık sorgusu ekleyebilir miyim?
Kullanıcı - Birçok Mesajını
Yayınla var - tek bir kullanıcı zaten bir işlevi $user->getPosts()
var
vardır, ama bu benim mesajların hepsi döner.
$user->getPosts()->where('active = true') //if this were possible
ya: Ben gibi olurdu bir $user->getActivePosts()
, yazmaya arıyorum Bildiğim kadarıyla söyleyebilirim
$em->getRepository('Posts')->findBy(array('user'=>$user,'active'=>true)) //if this were more convenient
, Varlık olsa varlık yöneticisine geri almak için hiçbir yolu yoktur kendisi, bu yüzden benim tek seçenek Ancak
class User {
function getActivePosts() {
$all_posts = $this->getPosts();
$active_posts = new ArrayCollection();
foreach ($all_posts as $post) {
if ($post->getActive()) {
$active_posts->add($post);
}
}
return $active_posts;
}
olurdu, bu benim varlık yöneticisi içine TÜM mesajları yüklemek açmamı gerçekten bunlardan sadece küçük bir alt kümesini istediğinizde, ve PHP filtreleme yapmamı gerektiriyor, ne zaman olurdu SQL katmanında bunu yapmak için daha uygun uch. Varlık içinde ne yapmak istediğimi gerçekleştirmenin herhangi bir yolu var mı, yoksa bunun dışında bir kod oluşturmak zorunda mıyım?
gibi
şey. Bir varlık bir varlık içine koymak eğiliminde olduğunuz zaman, bir geri adım atmanın ve bir hizmette veya bir çeşit depoda ne yapıyorsanız onu düşünmenin zamanı geldiğini biliyorsunuz. OP'nin durumunda, eğer sadece Postalar koleksiyonunu filtrelemek istiyorsa, bunu sadece $ this-> yazılarının üstünden geçirerek ve bir diziyi doldurarak Entity'de yapabilirdi - güzel ve temiz, ancak yükleme/nemlendirme gerektirdiğinden çok verimli değil kullanıcının tüm mesajları. – timdev
PostUpository :: findActiveByUser() öğesinin kendi findActivePosts() yönteminde çağrılması Post Entity için kötü bir uygulama olarak kabul edilir mi? –