Соотношение Extbase mm - геттер от противоположного - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть две сущности:

Курс и период

Обе могут быть связаны через таблицу соединений.На 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)
);
...