以下ZendCasts演员表示了一种在zend框架环境中使用doctrine 2的方法.
使用此配置,如何使连接使用utf-8字符集,以便"SET NAMES 'utf8'"发生魔力?
我真正想要的是使用application.ini文件配置它的方法.
如果使用此配置无法实现,那么如何通过代码完成?_initDoctrineBootstratp文件中的方法?
谢谢.
更新
看来有一个post connect事件处理这个,但我不知道如何通过application.ini设置它(如果可能的话).
如果没有,我可以通过bootstrap方法进行设置吗?在依赖Bisna库时,引导方法是否会在任何其他学说连接代码运行之前运行?
我试图获得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中
我正在开发一个需要支持多租户模型的应用程序.我正在使用symfony2 php框架和doctrine2.
我不确定构建此要求的最佳方法.Symfony的ACL功能是否提供了解决方案的一部分?
您可以提供哪些建议或想法?是否有任何已实施此策略的示例symfony2应用程序或开源应用程序?
我的第一个想法是在所有表中使用tenant_id列,并将其与应用程序中的帐户对象相关联.我不确定ACL是否应该照顾我想要做的事情,或者你是否还要对所有针对你的对象的查询负责,这样他们就不会返回未经授权的数据.
如果我没有使用Doctrine,可能很容易说只是附加Where tenant_id = @accountid到每个查询,但我不确定这是正确的方法.
谢谢
我想在我的主页上为每个帖子收到所有评论
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:映射是正确的,因为我可以看到页面文章及其注释.
我正在使用名为"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项目中包含学说扩展?
是否可以在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 ) )
建议,提示将不胜感激.
我有一对协会.它们是多对多的,我使用显式创建的实体来加入它们,因此我可以获得关于关系的元数据.虽然它们是相同的,但是一个有效,另一个没有.更糟糕的是,上周,他们都工作了,从那时起我就没有接触过他们.在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) 我有一个长时间运行的守护程序(Symfony2 Command),可以在Redis中的工作队列中工作,并使用orm执行这些作业并写入数据库.
我注意到,当工人怠速等待工作时,工作人员有死亡的倾向,因为与MySQL的连接超时.
具体来说,我在日志中看到了这一点:MySQL Server已经消失了.
无论如何我可以让学说自动重新连接吗?或者有什么方法可以手动捕获异常并重新连接学说orm?
谢谢
我正在查看Symfony2验证参考,但我找不到我需要的东西.
我有一个带有StartDate和EndDate的课程.我想添加一个\ @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) 我知道Doctrine 2不支持FULLTEXT索引.我实际上使用结果集映射和本地查询到FULLTEXT搜索innodb表(MySQL 5.6).但我仍然需要将一个或多个实体字段标记为索引的一部分.
有没有办法使用注释添加索引?似乎@Index注释没有指定...的类型
doctrine-orm ×10
php ×5
symfony ×5
doctrine ×2
assert ×1
casting ×1
dql ×1
left-join ×1
multi-tenant ×1
mysql ×1
saas ×1
validation ×1