У меня есть три doctrine2 модели:ArrayCollection :: соответствие с отношениями
Person
- $id
- $schoolClasses (ArrayCollection, OneToMany PersonSchoolClass)
SchoolClass
- $id
PersonSchoolClass (ManyToOne SchoolClass)
- $id
- $schoolClass
- $person
- $active
В моих Person::addSchoolClass(SchoolClass $schoolClass)
, я хочу увидеть, если есть уже в моем ArrayCollection<PersonSchoolClass>
SchoolClass
.
Я использую этот код:
/**
* @param SchoolClass $schoolClass
* @return Person
*/
public function addSchoolClass(SchoolClass $schoolClass)
{
$criteria = Criteria::create()
->where(Criteria::expr()->eq("schoolClass.id", $schoolClass->getId()))
->setFirstResult(0)
->setMaxResults(1);
$t = $this->getSchoolClasses()->matching($criteria);
if (!$t) {
$t = new PersonSchoolClass();
$t->setPerson($this);
$t->setSchoolClass($schoolClass);
$this->getSchoolClasses()->add($schoolClass);
}
$t->setActive();
return $this;
}
Но я всегда получаю тайм-аут на $this->getSchoolClasses()->matching($criteria);
(процесс убит через минуту или около того).
У кого-нибудь есть идеи?
спасибо!
вы пытаетесь проверить, если ваш 'SchoolClass' существует в коллекции уже перед тем, как добавить его? – AlexP
@ALexP Да, точно – Ueli