typo3 extbase - 双向关系

时间:2015-01-28 07:46:07

标签: typo3 extbase

我有两个表:fe_users(对于我的前端用户)和tx_somethingarticles_domain_model_article。用户应该能够“喜欢”一篇文章,所以对于每个用户,如果他已经喜欢某篇文章,我需要这些信息,而且我还需要知道文章已经有多少喜欢的信息。所以我相信我需要的是双向mm关系,但我似乎无法让它工作。我有我的用户实体,看起来像这样:

/**
 * articleLike
 *
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Package\SomethingArticles\Domain\Model\Article>
 */
protected $articleLike = NULL;

public function addArticlesLike(\Package\SomethingArticles\Domain\Model\Article $articlesLike) {
    $this->articlesLike->attach($articlesLike);
}

public function removeArticlesLike(\Package\SomethingArticles\Domain\Model\Article $remove) {
    $this->articlesLike->detach($remove);
}

public function getArticlesLike() {
    return $this->articlesLike;
}

public function setArticlesLike(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $articlesLike) {
    $this->articlesLike = $articlesLike;
}

我的文章实体有这个:     protected $ articlesLike = NULL;

public function getArticlesLike() {
    return $this->articlesLike;
}

使用getArticlesLike我想得到所有喜欢的文章。我的用户tca.php有article_like列,如下所示:

'articles_like' => array(
        'exclude' => 1,
        'label' => 'LLL:EXT:something_articles/Resources/Private/Language/locallang_db.xlf:tx_somethingarticles_domain_model_user.articles_like',
        'config' => array(
            'type' => 'group',
            'internal_type' => 'db',
            'foreign_table' => 'tx_somethingarticles_domain_model_article',
            'allowed' => '*',
            'MM' => 'tx_somethingarticles_user_articleslike_article_mm',
            'MM_opposite_field' => 'articles_like',
            'size' => 10,
            'autoSizeMax' => 30,
            'maxitems' => 9999,
            'multiple' => 0,
        ),
    ),

和我文章的tca.php:

        'articles_like' => array(
            'exclude' => 1,
            'label' => 'LLL:EXT:something_articles/Resources/Private/Language/locallang_db.xlf:tx_somethingarticles_domain_model_article.articles_like',
            'config' => array(
                'type' => 'group',
                'internal_type' => 'db',
                'allowed' => '*',
                'foreign_table' => 'fe_users',
                'MM' => 'tx_somethingarticles_user_articleslike_article_mm',
                'maxitems'   => 9999,
            ),
        ),

当我获取用户并尝试类似$ user-&gt; getArticlesLike()的内容时,它可以完美地运行,我也可以添加新的喜欢,就像魅力一样。但是当我尝试$ article-&gt; getArticlesLike()时...它总是空的。我错过了什么?

我真的很绝望,过去10个小时我一直试图解决这个问题,我似乎无法找到解决方案。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

对文章TCA使用以下列配置:

'foreign_table' => 'tx_somethingarticles_user_articleslike_article_mm'

删除MM:)

答案 1 :(得分:1)

我们遇到了同样的问题,记录在案on this websitein the documentation两件事情至关重要。

  1. 在TCA中确保您设置的两个相关表格:

    'multiple' => 1
    
  2. 你的MM表应该有一个字段“sorting_foreign”,所以你的ext_tables.sql应该有这样的定义:

    sorting_foreign int(11) DEFAULT '0' NOT NULL