Questions tagged «doctrine-orm»

主义ORM是PHP ORM。当Doctrine 1.2使用活动记录模式时,Doctrine ORM 2及更高版本使用数据映射器模式。Doctrine项目是用于处理用PHP编写的数据库抽象和对象关系映射的开放源代码库和工具的集合。

12
在文件系统中移动类后,“类XXX不是有效实体或映射的超类”
我在Aib \ PlatformBundle \ Entity \ User.php中有一个实体类 我通过尝试创建其表单类没有问题 PHP应用程序/控制台原则:生成:表单AibPlatformBundle:用户 现在,我已将名称空间更改为Aib \ PlatformBundle \ Entity \ Identity \ User,但是当我尝试使用任务生成表单时,我在其之前说过: “类Aib \ PlatformBundle \ Entity \ User不是有效的实体或映射的超类。” 这是文件内容: <?php namespace Aib\PlatformBundle\Entity\Identity; use Doctrine\ORM\Mapping as ORM; /** * Aib\PlatformBundle\Entity\Identity\User * * @ORM\Table() * @ORM\Entity(repositoryClass="Aib\PlatformBundle\Entity\Identity \UserRepository") */ class User { ... 任何想法? symfony2.0.4

12
如何在Symfony 2.0 AJAX应用程序中将Doctrine实体编码为JSON?
我正在开发游戏应用程序并使用Symfony 2.0。我对后端有很多AJAX请求。更多的响应是将实体转换为JSON。例如: class DefaultController extends Controller { public function launchAction() { $user = $this->getDoctrine() ->getRepository('UserBundle:User') ->find($id); // encode user to json format $userDataAsJson = $this->encodeUserDataToJson($user); return array( 'userDataAsJson' => $userDataAsJson ); } private function encodeUserDataToJson(User $user) { $userData = array( 'id' => $user->getId(), 'profile' => array( 'nickname' => $user->getProfile()->getNickname() ) …

2
教义2和多对多链接表,带有一个额外的字段
(很抱歉,我的问题不连贯:撰写本文时,我试图回答一些问题,但这是:) 我正在尝试创建一个在链接表中具有多对多关系的数据库模型,但是每个链接也有一个值,在这种情况下是库存表。(这是我遇到的更多问题的基本示例,但我认为在继续之前,我将对此进行测试)。 对于这个简单的示例,我已经使用exportmwb生成了两个实体商店和产品,两者均显示在下面。 但是,现在的问题是,我无法弄清楚如何使用Doctrine访问stock.amount值(带符号int,因为它可以是负数)。另外,当我尝试使用主义的orm:schema-tool:create函数创建表时 这仅产生了两个实体和三个表,一个是没有值的链接表,两个是数据表,因为多对多关系本身不是实体,因此我只能将Product和Store作为实体。 因此,从逻辑上讲,我试图更改数据库模型,以将库存作为具有存储和产品关系的独立表。我还重写了字段名,只是为了能够将其排除在问题之外: 然后发现我仍然没有股票实体……并且数据库本身没有“金额”字段。 我真的需要能够将这些商店和产品绑定在一个库存表中(除其他外)……因此,仅在产品本身上添加库存是不可行的。 root@hdev:/var/www/test/library# php doctrine.php orm:info Found 2 mapped entities: [OK] Entity\Product [OK] Entity\Store 而且,当我创建数据库时,它仍然没有在库存表中提供正确的字段: 因此,在这里查找一些内容后,我发现多对多连接不是实体,因此不能具有值。因此,我尝试将其更改为具有其他关系的单独表,但仍然无法正常工作。 我在这里做错了什么?

18
EntityManager已关闭
[Doctrine\ORM\ORMException] The EntityManager is closed. 在插入数据时出现DBAL异常后,EntityManager关闭并且无法重新连接。 我尝试过这种方法,但是没有连接。 $this->em->close(); $this->set('doctrine.orm.entity_manager', null); $this->set('doctrine.orm.default_entity_manager', null); $this->get('doctrine')->resetEntityManager(); $this->em = $this->get('doctrine')->getEntityManager(); 有人知道如何重新连接吗?


8
如何合并两个PHP Doctrine 2 ArrayCollection()
有什么方便的方法可以让我串联两个教义ArrayCollection()吗?就像是: $collection1 = new ArrayCollection(); $collection2 = new ArrayCollection(); $collection1->add($obj1); $collection1->add($obj2); $collection1->add($obj3); $collection2->add($obj4); $collection2->add($obj5); $collection2->add($obj6); $collection1->concat($collection2); // $collection1 now contains {$obj1, $obj2, $obj3, $obj4, $obj5, $obj6 } I just want to know if I can save me iterating over the 2nd collection and adding each element one by one to …

7
侦听器与订户
我正在使用Symfony2框架,想知道何时使用Doctrine订户而不是侦听器。对于听众,Doctrine的文档非常清晰,但是订阅者却被蒙蔽了。Symfony的食谱条目与此类似。


4
如何使用symfony2原则查询构建器选择不同的查询?
我有这个symfony代码,它在其中检索与项目中的博客部分相关的所有类别: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->getQuery(); $categories = $category->getResult(); 这可行,但是查询包含重复项: Test Content Business Test Content 我想DISTINCT在查询中使用该命令。我所看到的唯一示例要求我编写原始SQL。我想尽可能避免这种情况,因为我试图使所有代码保持相同,因此它们都使用Symfony2 / Doctrine提供的QueryBuilder功能。 我试图distinct()像这样添加到我的查询: $category = $catrep->createQueryBuilder('cc') ->Where('cc.contenttype = :type') ->setParameter('type', 'blogarticle') ->distinct('cc.categoryid') ->getQuery(); $categories = $category->getResult(); 但这会导致以下错误: 致命错误:调用未定义的方法Doctrine \ ORM \ QueryBuilder :: distinct() 如何告诉symfony选择与众不同?

6
如何使用具有比较标准的findBy方法
我需要使用“ magic finder” findBy方法并使用比较标准(不仅是精确标准)。换句话说,我需要执行以下操作: $result = $purchases_repository->findBy(array("prize" => ">200")); 这样我就能获得所有奖金在200以上的商品。


5
学说:QueryBuilder与createQuery?
在Doctrine中,您可以通过两种方式创建DQL: EntityManager :: createQuery: $query = $em->createQuery('SELECT u FROM MyProject\Model\User u WHERE u.id = ?1'); QueryBuilder: $qb->add('select', 'u') ->add('from', 'User u') ->add('where', 'u.id = ?1') ->add('orderBy', 'u.name ASC'); 我想知道区别是什么,应该使用哪个?

1
Symfony2中ObjectManager和EntityManager之间的区别?
在自定义表单类型中使用它Doctrine\Common\Persistence\ObjectManager和Doctrine\ORM\EntityManager使用它之间有什么区别? 我可以使用$this->em->getRepository()和来获取存储库$this->om->getRepository()。 class MyFormType extends \Symfony\Component\Form\AbstractType { /** * @var Doctrine\ORM\EntityManager */ protected $em; public function __construct(Doctrine\ORM\EntityManager $em) { $this->em = $em; } } 代替: class MyFormType extends \Symfony\Component\Form\AbstractType { /** * @var Doctrine\Common\Persistence\ObjectManager */ protected $om; public function __construct(Doctrine\Common\Persistence\ObjectManager $om) { $this->om = $om; } }

5
在Doctrine 2中指定小数字段类型时,小数位数和精度是什么意思?
我正在为我的Symfony2应用程序创建一个小数字段以在Doctrine2中保存财务数据。 当前,它看起来像这样: /** * @ORM\Column(type="decimal") */ protected $rate; 当我输入一个值并将所述值持久保存到数据库时,将其四舍五入为整数。我猜想我需要为该字段设置精度和比例类型,但是我需要有人确切解释它们的作用? 该Doctrine2文档说: precision:十进制(精确数字)列的精度(仅适用于十进制列) scale:小数(精确数字)列的小数位数(仅适用于小数列) 但这并不能告诉我很多。 我猜精度是要舍入的小数位数,因此我假设应该为2,但是小数位数是多少?规模是重要数字吗? 我的现场声明应该是这样吗?:- /** * @ORM\Column(type="decimal", precision=2, scale=4) */ protected $rate;

1
不建议使用:教义\ ORM \ Mapping \ UnderscoreNamingStrategy(不使其知道数字)已弃用
我正在使用Symfony 4.3.8,但找不到有关这些弃用的任何信息: 不推荐使用的用户:不建议使用创建Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy而不知道其编号的方法已被弃用,并将在Doctrine ORM 3.0中将其删除。 不赞成创建Doctrine \ ORM \ Mapping \ UnderscoreNamingStrategy而不通知其编号的做法已被弃用,并将在Doctrine ORM 3.0中将其删除。 我在stacktrace中搜索,发现了这一点: class UnderscoreNamingStrategy implements NamingStrategy { private const DEFAULT_PATTERN = '/(?<=[a-z])([A-Z])/'; private const NUMBER_AWARE_PATTERN = '/(?<=[a-z0-9])([A-Z])/'; /** * Underscore naming strategy construct. * * @param int $case CASE_LOWER | CASE_UPPER …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.