У меня есть две сущности:
Курс и период
Обе могут быть связаны через таблицу соединений.На TCA курса период определяется как встроенный, поэтому я могу добавлять новые периоды для каждого курса.Эти записи правильно хранятся в таблице соединений.На курсе TCA связанные периоды отображаются правильно.Когда я получаю период через PeriodRepository и пытаюсь получить курс за период, результат будет пустым.Как я могу получить доступ к курсу за период?
Курс TCA:
'periods' => [
'exclude' => true,
'label' => 'LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_domain_model_period',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_courses_domain_model_period',
'MM' => 'tx_courses_course_period_mm',
'enableMultiSelectFilterTextfield' => true,
'MM_opposite_field' => 'courses',
'appearance' => [
'useSortable' => 1,
'collapseAll' => 1,
'expandSingle' => 1,
]
],
],
Период TCA:
'courses' => [
'exclude' => true,
'label' => 'LLL:EXT:courses/Resources/Private/Language/locallang_db.xlf:tx_courses_domain_model_module.courses',
'config' => [
'type' => 'select',
'multiple' => 1,
'foreign_table' => 'tx_courses_domain_model_course',
'MM' => 'tx_courses_course_period_mm',
'MM_opposite_field' => 'periods',
],
],
Курс Entity:
/**
* periods
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NAMESPACE\courses\Domain\Model\Period>
*/
protected $periods = null;
/**
* Adds a Period
*
* @param \NAMESPACE\courses\Domain\Model\Period $period
*
* @return void
*/
public function addPeriod(\NAMESPACE\courses\Domain\Model\Period $period)
{
$this->periods->attach($period);
}
/**
* Removes a Period
*
* @param \NAMESPACE\courses\Domain\Model\Period $periodToRemove The Period to be removed
*
* @return void
*/
public function removePeriod(\NAMESPACE\courses\Domain\Model\Period $periodToRemove)
{
$this->periods->detach($periodToRemove);
}
/**
* Returns the periods
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NAMESPACE\courses\Domain\Model\Period> $periods
*/
public function getPeriods()
{
return $this->periods;
}
/**
* Sets the periods
*
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NAMESPACE\courses\Domain\Model\Period> $periods
*
* @return void
*/
public function setPeriods(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $periods)
{
$this->periods = $periods;
}
Период Entity:
/**
* modules
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NAMESPACE\courses\Domain\Model\Course>
*/
protected $courses = null;
/**
* Adds a Course
*
* @param \NAMESPACE\courses\Domain\Model\Course $course
*
* @return void
*/
public function addCourse(\NAMESPACE\courses\Domain\Model\Course $course)
{
$this->courses->attach($course);
}
/**
* Removes a Course
*
* @param \NAMESPACE\courses\Domain\Model\Course $courseToRemove The Course to be removed
*
* @return void
*/
public function removeCourse(\NAMESPACE\courses\Domain\Model\Course $courseToRemove)
{
$this->courses->detach($courseToRemove);
}
/**
* Returns the courses
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NAMESPACE\courses\Domain\Model\Course> $courses
*/
public function getCourses()
{
return $this->courses;
}
/**
* Sets the courses
*
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\NAMESPACE\courses\Domain\Model\Course> $courses
*
* @return void
*/
public function setCourses(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $courses)
{
$this->courses = $courses;
}
Миграция:
CREATE TABLE tx_courses_domain_model_course (
title varchar(255) DEFAULT '' NOT NULL,
periods int(11) unsigned DEFAULT '0' NOT NULL,
);
CREATE TABLE tx_courses_domain_model_period (
title varchar(255) DEFAULT '' NOT NULL,
courses int(11) unsigned DEFAULT '0' NOT NULL,
);
CREATE TABLE tx_courses_course_period_mm (
uid_local int(11) unsigned DEFAULT '0' NOT NULL,
uid_foreign int(11) unsigned DEFAULT '0' NOT NULL,
sorting int(11) unsigned DEFAULT '0' NOT NULL,
sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL,
KEY uid_local (uid_local),
KEY uid_foreign (uid_foreign)
);