相关疑难解决方法(0)

在Doctrine 2.0实体中使用EntityManager

我有2个实体:Country(id,name)和Mapping(id,object,internalId,externalId).国家和地图未与关联相关联(因为"映射"不仅包含国家/地区的行).我需要使用以下条件获取国家/地区的外部ID:

  • country.id = mapping.internalId
  • mapping.object = 'country'

所以我计划在Country中添加函数getExternalId()

function getExternalId() {
    $em = Registry::getEntityManager();

    $mapping = $em->getRepository('Mapping')->findOneBy(array(
        'object'     => 'country',
        'internalId' => $this->getId()
    ));

    return !empty($mapping) ? $mapping->getExternalId() : false;
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 在实体中使用EntityManager是一种好习惯吗?如果不是,请解释如何在我的情况下获得外部身份证?
  2. 也许可以使用yaml文件关联Country和Mapping?

提前致谢!

entitymanager doctrine-orm

33
推荐指数
3
解决办法
3万
查看次数

如何通过实体管理器获取上一个和下一个实体

这就是我能够使用它的id获取用户实体的方式:

$userEntity = $em->getRepository('ModelBundle:User')->find($userId);
Run Code Online (Sandbox Code Playgroud)

有没有办法根据这个$ userEntity获取上一个和下一个实体?

例如:我获取$ userEntity并且它的id为100,现在我想要获取前一个实体,无论它的id为99,80,70,无论它是什么!与下一个实体的情况相同..

我已经可以使用一些PHP黑客获取下一个和上一个,但是我正在寻找更好的方法..

编辑: 只是为了澄清我正在寻找面向对象的方法,如下所示:

$userEntity = $em->getRepository('ModelBundle:User')->find($userId);
$previousUserEntity = $userEntity->previous(); //example
$previousUserEntity = $userEntity->next(); //example
Run Code Online (Sandbox Code Playgroud)

我知道userEntity不包含任何方法,如previous()和next(),它只是一个例子,如果存在任何类似的东西,可以帮助直接以面向对象的方式获得下一个和前一个实体!

doctrine symfony doctrine-orm

4
推荐指数
1
解决办法
2426
查看次数

在Doctrine实体中获取最大ID

我需要获取symfony 2.7实体内的表的最大ID.但我没有得到这个问题,而是得到了这个问题.

注意:未定义的属性:AppBundle\Entity\BlogPost :: $ container

这是我的BlogPost实体,

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;

/**
 * BlogPost
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class BlogPost {

    const SERVER_PATH_TO_IMAGE_FOLDER = '/uploads';

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255)
     */
    private $title;

    /**
     * @var string
     *
     * @ORM\Column(name="body", type="text")
     */
    private $body;

    /**
     * @var string
     *
     * @ORM\Column(name="filename", type="text")
     */
    private …
Run Code Online (Sandbox Code Playgroud)

entity query-builder symfony doctrine-orm

0
推荐指数
1
解决办法
5666
查看次数