2014-12-29 4 views
0

У меня отношение n: m между двумя таблицами, поэтому построитель расширения typo3 создал для меня таблицу мм.Typo3 MM Отношение

так что теперь я хочу добавить отношение между этими двумя таблицами?

одна таблица называется pruefling и один называется ПКД

и таблица мм называется fach_pruefling_mm

я попытался это:

$fach->setMatrikelnr($pruefling->getUid()); 

расширение строитель выглядит следующим образом: enter image description here

ОБНОВЛЕНИЕ: Fach Модель

class Fach extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity { 

/** 
* fachnr 
* 
* @var string 
* @validate NotEmpty 
*/ 
protected $fachnr = ''; 

/** 
* fachname 
* 
* @var string 
* @validate NotEmpty 
*/ 
protected $fachname = ''; 

/** 
* pruefer 
* 
* @var string 
* @validate NotEmpty 
*/ 
protected $pruefer = ''; 

/** 
* notenschema 
* 
* @var string 
* @validate NotEmpty 
*/ 
protected $notenschema = ''; 

/** 
* modulnr 
* 
* @var string 
* @validate NotEmpty 
*/ 
protected $modulnr = ''; 

/** 
* matrikelnr 
* 
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\ReRe\Rere\Domain\Model\Pruefling> 
*/ 
protected $matrikelnr = NULL; 

/** 
* Returns the fachnr 
* 
* @return string $fachnr 
*/ 
public function getFachnr() { 
    return $this->fachnr; 
} 

/** 
* Sets the fachnr 
* 
* @param string $fachnr 
* @return void 
*/ 
public function setFachnr($fachnr) { 
    $this->fachnr = $fachnr; 
} 

/** 
* Returns the fachname 
* 
* @return string $fachname 
*/ 
public function getFachname() { 
    return $this->fachname; 
} 

/** 
* Sets the fachname 
* 
* @param string $fachname 
* @return void 
*/ 
public function setFachname($fachname) { 
    $this->fachname = $fachname; 
} 

/** 
* Returns the pruefer 
* 
* @return string $pruefer 
*/ 
public function getPruefer() { 
    return $this->pruefer; 
} 

/** 
* Sets the pruefer 
* 
* @param string $pruefer 
* @return void 
*/ 
public function setPruefer($pruefer) { 
    $this->pruefer = $pruefer; 
} 

/** 
* Returns the notenschema 
* 
* @return string $notenschema 
*/ 
public function getNotenschema() { 
    return $this->notenschema; 
} 

/** 
* Sets the notenschema 
* 
* @param string $notenschema 
* @return void 
*/ 
public function setNotenschema($notenschema) { 
    $this->notenschema = $notenschema; 
} 

/** 
* __construct 
*/ 
public function __construct() { 
    //Do not remove the next line: It would break the functionality 
    $this->initStorageObjects(); 
} 

/** 
* Initializes all ObjectStorage properties 
* Do not modify this method! 
* It will be rewritten on each save in the extension builder 
* You may modify the constructor of this class instead 
* 
* @return void 
*/ 
protected function initStorageObjects() { 
    $this->matrikelnr = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); 
} 

/** 
* Returns the modulnr 
* 
* @return string $modulnr 
*/ 
public function getModulnr() { 
    return $this->modulnr; 
} 

/** 
* Sets the modulnr 
* 
* @param string $modulnr 
* @return void 
*/ 
public function setModulnr($modulnr) { 
    $this->modulnr = $modulnr; 
} 

public function getMatrikelnr() { 
    return $this->matrikelnr; 
} 

/** 
* @param $matrikelnr 
*/ 
public function setMatrikelnr($matrikelnr) { 
    $this->matrikelnr = $matrikelnr; 
} 

} 
+1

также взглянуть на пример по @lorenz в http://stackoverflow.com/a/26746960/160968, которые могут быть полезны в вашем проекте – Urs

+0

не очень ... он говорит о 1: n ... но у меня есть отношение: m – Felix

+1

Если я правильно помню, решение использует отношение: m для цели 1: n. – Urs

ответ

2

де-факто вы должны использовать методы addMatrikelnr(...) и removeMatrikelnr(...) для добавления и remving отношения, они порождаются Builder в Fach модели.

Посмотрите на метод setMatrikelnr в модели, поскольку в качестве параметра требуется коллекция не одного объекта.

Там же типичный набор методов для m:n соотношения:

<?php 
namespace ReRe\Rere\Domain\Model; 

class Fach extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity { 

    /** 
    * matrikelnr 
    * 
    * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\ReRe\Rere\Domain\Model\Pruefling> 
    */ 
    protected $matrikelnr = NULL; 

    /** 
    * __construct 
    */ 
    public function __construct() { 
     //Do not remove the next line: It would break the functionality 
     $this->initStorageObjects(); 
    } 

    /** 
    * Initializes all ObjectStorage properties 
    * Do not modify this method! 
    * It will be rewritten on each save in the extension builder 
    * You may modify the constructor of this class instead 
    * 
    * @return void 
    */ 
    protected function initStorageObjects() { 
     $this->matrikelnr = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); 
    } 

    /** 
    * Adds a Pruefling 
    * 
    * @param \ReRe\Rere\Domain\Model\Pruefling $matrikelnr 
    * @return void 
    */ 
    public function addMatrikelnr(\ReRe\Rere\Domain\Model\Pruefling $matrikelnr) { 
     $this->matrikelnr->attach($matrikelnr); 
    } 

    /** 
    * Removes a Pruefling 
    * 
    * @param \ReRe\Rere\Domain\Model\Pruefling $matrikelnrToRemove The Pruefling to be removed 
    * @return void 
    */ 
    public function removeMatrikelnr(\ReRe\Rere\Domain\Model\Pruefling $matrikelnrToRemove) { 
     $this->matrikelnr->detach($matrikelnrToRemove); 
    } 

    /** 
    * Returns the matrikelnr 
    * 
    * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\ReRe\Rere\Domain\Model\Pruefling> $matrikelnr 
    */ 
    public function getMatrikelnr() { 
     return $this->matrikelnr; 
    } 

    /** 
    * Sets the matrikelnr 
    * 
    * @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\ReRe\Rere\Domain\Model\Pruefling> $matrikelnr 
    * @return void 
    */ 
    public function setMatrikelnr(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $matrikelnr) { 
     $this->matrikelnr = $matrikelnr; 
    } 

} 
+0

не имеют функции Matrikelnr. .. 'Вызов неопределенного метода ReRe \ Rere \ Domain \ Model \ Fach :: addMatrikelnr()' – Felix

+0

Как насчет вашей модели Fach использовать эти методы? – biesior

+0

нет на самом деле .. расширение строитель не создал Я разместил код модели в своем вопросе – Felix

 Смежные вопросы

  • Нет связанных вопросов^_^