标签: doctrine-orm

在使用Bisna时,如何在Zend Framework application.ini中定义Doctrine 2中utf-8的使用

以下ZendCasts演员表示了一种在zend框架环境中使用doctrine 2的方法.
使用此配置,如何使连接使用utf-8字符集,以便"SET NAMES 'utf8'"发生魔力?

我真正想要的是使用application.ini文件配置它的方法.
如果使用此配置无法实现,那么如何通过代码完成?_initDoctrineBootstratp文件中的方法?

谢谢.

更新
看来有一个post connect事件处理这个,但我不知道如何通过application.ini设置它(如果可能的话).
如果没有,我可以通过bootstrap方法进行设置吗?在依赖Bisna库时,引导方法是否会在任何其他学说连接代码运行之前运行?

doctrine zend-framework character-encoding doctrine-orm

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

在Doctrine2 DQL查询上进行排序的CASTING属性

我试图获得Doctrine2实体,按其ID排序,显然是一个字符串,即使它只包含数字.所以我想做的是这样的:

SELECT entity1, cast (entity1.id AS integer) AS orderId
FROM Namespace\Bla\MyEntity 
ORDER BY orderId
Run Code Online (Sandbox Code Playgroud)

有没有办法在Doctrine2中做这样的事情?或者,如果我无法更改ID的类型(当然是由于客户要求),获得我的结果的最佳做法是什么?


注意:我不是在问SQL代码,我要求一个Doctrine2解决方案,最好是在DQL中

casting type-conversion dql doctrine-orm

19
推荐指数
2
解决办法
1万
查看次数

使用Symfony2和Doctrine2开发多租户应用程序的最佳实践

我正在开发一个需要支持多租户模型的应用程序.我正在使用symfony2 php框架和doctrine2.

我不确定构建此要求的最佳方法.Symfony的ACL功能是否提供了解决方案的一部分?

您可以提供哪些建议或想法?是否有任何已实施此策略的示例symfony2应用程序或开源应用程序?

我的第一个想法是在所有表中使用tenant_id列,并将其与应用程序中的帐户对象相关联.我不确定ACL是否应该照顾我想要做的事情,或者你是否还要对所有针对你的对象的查询负责,这样他们就不会返回未经授权的数据.

如果我没有使用Doctrine,可能很容易说只是附加Where tenant_id = @accountid到每个查询,但我不确定这是正确的方法.

谢谢

php saas multi-tenant symfony doctrine-orm

19
推荐指数
2
解决办法
4337
查看次数

doctrine 2查询构建器和连接表

我想在我的主页上为每个帖子收到所有评论

return 
$this->createQueryBuilder('c')
->select('c')
->from('Sdz\BlogBundle\Entity\Commentaire' ,'c')                
->leftJoin('a.comments' ,'c')->getQuery()->getResult() ;
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

[Semantical Error] line 0, col 58 near '.comments c,': Error:
Identification Variable a used in join path expression but was not defined before.
Run Code Online (Sandbox Code Playgroud)

PS:映射是正确的,因为我可以看到页面文章及其注释.

left-join query-builder doctrine-orm

19
推荐指数
1
解决办法
6万
查看次数

symfony2:如何在QueryBuilder中使用group_concat

我正在使用名为"Location"的嵌套集(使用Gedmo树)实体.实体"公寓"有location_id以及我需要做什么来将标量值(例如"path")映射到返回所有公寓的查询.

在Doctrine1中,我有这个代码:

/**
* Add "path" to each element
* 
* @param Doctrine_Query $query
* @param string $separator
*/
protected function addScalar_path(Doctrine_Query $query, $separator=", ")
{
    $subquery = "k99.root_id=o.root_id AND k99.lft<=o.lft AND k99.rgt>=o.rgt AND k99.level<=o.level" ;

    $query->addSelect("(SELECT GROUP_CONCAT(k99.name ORDER BY k99.level SEPARATOR '$separator') FROM Location k99 WHERE $subquery) AS path") ;
}
Run Code Online (Sandbox Code Playgroud)

注意:"o"别名用于主查询.这段代码可以让我使用

{foreach .... as $appartment}
   {$appartment->path}
...
Run Code Online (Sandbox Code Playgroud)

哪个会打印:

Australia, Victoria, Melbourne, ...other children...
Run Code Online (Sandbox Code Playgroud)

如何在D2中做同样的事情?以及如何在我的symfony2项目中包含学说扩展?

symfony doctrine-orm

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

更改主键值的getResult数组键

是否可以在Doctrine2中更改getResult()的数组键值?

例:

$qb->select('t.id, t.name')->from('Table', 't');

当我打印这个时,我得到了,这不是我想要的:

print_r($qb->getQuery()->getResult());

//Print result: Array ( [0] => Array ( [id] => 20 [name] => Name1 ) [1] => Array ( [id] => 21 [percentagem] => Name2 ) )

我想要的是:

Array ( [20] => Array ( [id] => 20 [name] => Name1 ) [21] => Array ( [id] => 21 [percentagem] => Name2 ) )

建议,提示将不胜感激.

php doctrine-orm

19
推荐指数
2
解决办法
1万
查看次数

不能为我的一个实体使用Doctrine PersistentCollection,另一个我可以

我有一对协会.它们是多对多的,我使用显式创建的实体来加入它们,因此我可以获得关于关系的元数据.虽然它们是相同的,但是一个有效,另一个没有.更糟糕的是,上周,他们都工作了,从那时起我就没有接触过他们.在MuSQL Workbench中,我可以选择正确的数据.

当我将数据提取到数组中时,生活是美好的.当我尝试另一个时,我得到:

调用setValue()非对象上的成员函数

当我尝试它时,我也得到它count(),访问它($blah[0])或迭代它(foreach).

当我执行:

echo get_class($inData)."<BR>";
echo get_class($inData->accountPurchaseNodes)."<BR>";
echo get_class($inData->accountPurchaseNodes[0])."<BR>";
echo "<HR>";

echo get_class($inData)." x<BR>";
echo get_class($inData->purchaseOrderNodes)."<BR>";
echo get_class($inData->purchaseOrderNodes[0])."<BR>";
echo "<HR>";
exit;
Run Code Online (Sandbox Code Playgroud)

我明白了:

GE\Entity\Purchase
Doctrine\ORM\PersistentCollection
GE\Entity\AccountPurchaseNode

GE\Entity\Purchase
Doctrine\ORM\PersistentCollection

( ! ) Fatal error: Call to a member function setValue() on a non-object in 
/Users/tqwhite/Documents/webdev/goodEarth/goodearth.com/library/
Doctrine/ORM/PersistentCollection.php on line 168
Run Code Online (Sandbox Code Playgroud)

下面,我包括实体定义的相关部分.我已经烧了几个小时尝试这个和那个.我非常感谢你的建议.

这一个工作:

//==Purchase  Entity=====================================

 /**
 * @param \Doctrine\Common\Collections\Collection $property
 * @OneToMany(targetEntity="AccountPurchaseNode", mappedBy="account", cascade={"persist", "remove"});
 */
private $accountPurchaseNodes;

//in __construct()
$this->accountPurchaseNodes = new …
Run Code Online (Sandbox Code Playgroud)

php doctrine-orm

19
推荐指数
1
解决办法
6330
查看次数

守护进程中的Doctrine2连接超时

我有一个长时间运行的守护程序(Symfony2 Command),可以在Redis中的工作队列中工作,并使用orm执行这些作业并写入数据库.

我注意到,当工人怠速等待工作时,工作人员有死亡的倾向,因为与MySQL的连接超时.

具体来说,我在日志中看到了这一点:MySQL Server已经消失了.

无论如何我可以让学说自动重新连接吗?或者有什么方法可以手动捕获异常并重新连接学说orm?

谢谢

php doctrine symfony doctrine-orm

19
推荐指数
4
解决办法
2万
查看次数

Symfony2验证日期时间1应该在日期时间2之前

我正在查看Symfony2验证参考,但我找不到我需要的东西.

我有一个带有StartDateEndDate的课程.我想添加一个\ @Assert(),它验证StartDate始终是BEFORE EndDate.是否存在将类属性作为验证约束进行比较的标准方法,还是应该创建自定义验证约束?

class Employment {

    /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    * @Expose() 
    */
    protected $id;

    /**
    * @ORM\Column(type="datetime") 
    * @Expose()
    * @Assert\DateTime()
    */
    protected $startDate;

    /**
    * @ORM\Column(type="datetime", nullable=TRUE)
    * @Expose()
    * @Assert\DateTime()
    */
    protected $endDate;

...
}
Run Code Online (Sandbox Code Playgroud)

php validation assert symfony doctrine-orm

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

使用注释在Doctrine 2中添加FULLTEXT索引?

我知道Doctrine 2不支持FULLTEXT索引.我实际上使用结果集映射和本地查询到FULLTEXT搜索innodb表(MySQL 5.6).但我仍然需要将一个或多个实体字段标记为索引的一部分.

有没有办法使用注释添加索引?似乎@Index注释没有指定...的类型

mysql full-text-search symfony doctrine-orm

19
推荐指数
1
解决办法
1万
查看次数