处理与Doctrine / Bolt EM的ContentType关系

时间:2016-09-15 23:27:45

标签: doctrine silex bolt-cms

我有一个扩展服务于创建实体(问题)的路线,该实体具有相关条目(每个条目都有0,1或许多相关问题)。

我似乎无法获得拯救/学说的持久性方法来实际保持关系。我尝试过以下方法:

$question = $repo->create([
    'question' => $request->get('question', 'What is love?'),
    'status' => 'draft',
    'entries' => [$entry]
]);

$question->relation->add($entry)

$question->setRelation(new Collection\Relations([$entry], $em))

(编辑)我也试过

$entry = $em->find('entries', $request->get('entry', 1));
$related = $em->createCollection('Bolt\Storage\Entity\Relations');
$related->add(new Relations([
    'from_contenttype' => $question->getContenttype(),
    'from_id' => $question->getId(),
    'to_contenttype' => $entry->getContenttype(),
    'to_id' => $entry->getId()
]));

$question->setRelation($relation);

根据以下回复,但仍然无效。

这些都不起作用 - 它正确地保存了问题(内容)实体,而不是关系。不确定从哪里开始......

2 个答案:

答案 0 :(得分:0)

这就是螺栓本身的作用:

    $related = $this->em->createCollection('Bolt\Storage\Entity\Relations');
    $related->setFromPost($formValues, $content);
    $content->setRelation($related);

从这里开始:https://github.com/bolt/bolt/blob/fde4e50fbbca13d90fea34f502477b4e26796593/src/Storage/ContentRequest/Save.php#L201-L203

希望能回答你的问题!

答案 1 :(得分:0)

这是我的工作测试,我知道目前的语法很难看,计划是添加一些辅助方法,但这确实有效。

$repo = $app['storage']->getRepository('pages');

$newPage = $repo->create(    
    [
        "title"  => 'An Example Title',
        "slug" => 'an-example-title',
        "status"  => 'published',
        "teaser"    => 'An intro teaser goes here',
        "body"  => 'Lorem ipsum dolor sit amet, consectet adipisici.',
    ]
);

$newPage->getRelation()->setFromPost(['entries' => [1]], $newPage);
$repo->save($newPage);