多对多自引用搜索

时间:2019-03-16 11:47:06

标签: doctrine-orm jms-serializer

我有一个“ 多对多自引用”实体,需要对父母孩子的元素进行搜索 。 例如

{
    "id": 58,
    "name": "DVD & Home Theater",
    "parent": {
        "id": 5,
        "name": "TV & Video",
        "parent": null
    }
}

搜索“ 家庭电视”,其中部分文本位于父元素中。 我可以添加一个额外的列,当持久化时,实体将子元素中的父元素名称连接到“ 电视和视频> DVD和家庭影院”中,以便使用该列进行搜索

我还想仅在将父元素的名称插入子元素的地方返回一个元素

{
    "id": 58,
    "name": "TV & Video > DVD & Home Theater"
}

我可以使用以下表示法解决此假设问题

/**
* @JMS\PreSerialize
* @return mixed
*/
public function getParent()
{
    $parent = $this->parent;
    if ($parent) {
        $this->name = $this->parent->getName() . ' > ' . $this->name;
    }
    return $parent;
}

我想要这样的最终结果

[
    {
        "id": 5,
        "name": "TV e Vídeo"
    }, {
        "id": 59,
        "name": "TV e Vídeo > TV Led"
    }, {
        "id": 82,
        "name": "TV e Vídeo > Antenas"
    }, {
        "id": 58,
        "name": "TV e Vídeo > DVD e Home Theater"
    }
]

0 个答案:

没有答案