我正在使用带有Doctrine 2.1的Symfony 2.0.10并且具有相当简单的查询(见下文),其中我想通过APC(版本3.1.7,为其启用1GB内存)缓存结果,useResultCache(true, 600)并保持水合模式为\Doctrine\ORM\Query::HYDRATE_OBJECT.
问题是多对多关系(Doctrine\ORM\PersistentCollection)不会被缓存,每次缓存主要查询结果时,连接的实体都被设置为null.当我设置水合模式时,相同的查询在APC中缓存得很好\Doctrine\ORM\Query::HYDRATE_ARRAY,但对我来说这是不可接受的解决方案,因为我无法重做许多模板来实现这一点.
请建议如何在APC中缓存所有已连接实体的属性?请不要指向文档,因为我认为我已经学会了解决这个问题:)
$property = $em
->createQueryBuilder()
->select('p,u')
->from('MyBundle:Property', 'p')
->leftJoin('p.users', 'u')
->where('p.id in (:id)')
->setParameter('id', 123)
->getQuery()
->useResultCache(true, 60)
->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_OBJECT)
->getResult();
Run Code Online (Sandbox Code Playgroud)
class User {
/**
* @ORM\ManyToMany(targetEntity="Property", mappedBy="users", cascade={"all"}, fetch="EAGER")
*/
protected $properties;
}
Run Code Online (Sandbox Code Playgroud)
class Property {
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="properties", cascade={"all"}, fetch="EAGER")
* @ORM\JoinTable(name="user_property",
* joinColumns={@ORM\JoinColumn(name="property_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
* )
*/
protected $users;
}
Run Code Online (Sandbox Code Playgroud) 我在一个控制器中创建了一个会话变量,我想在另一个控制器中访问它.在loginsuccess控制器中我设置会话:
$session->set('id',$id);
Run Code Online (Sandbox Code Playgroud)
如何在另一个控制器中访问此变量?
我需要在FOSUserBundle中更改确认电子邮件的模板.我有这个设置,但它不起作用:
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\UserBundle\Entity\User
registration:
confirmation:
enabled: true
email:
template: AcmeUserBundle:User:confirm.email.twig
Run Code Online (Sandbox Code Playgroud)
错误是:
Unrecognized options "email" under "fos_user.registration"
Run Code Online (Sandbox Code Playgroud) 我想使用哨兵来评估可能的错误,异常等.
我试图使用KunstmaanSentryBundle,它很好地捕获所有类型的错误,如未定义的函数等等,但我想用它自己的处理程序定义我自己的Monolog通道,但遗憾的是我还没有找到有关它的文档.
config.yml 会是这样的:
monolog:
handlers:
sentry:
type: stream
level: error
//Log to database parameter (raven for sentry)
Run Code Online (Sandbox Code Playgroud)
有人知道正确的配置吗?
我有这个代码,但它不起作用:
$builder->add('name','text',array(
'label' => 'Due Date',
));
Run Code Online (Sandbox Code Playgroud)
我在fosuserbundle中遇到的问题,我有覆盖形式
<?php
namespace Acme\UserBundle\Form\Type;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilder $builder, array $options)
{
// add your custom field
$builder->add('name','text',array(
'label' => 'Due Date',
));
parent::buildForm($builder, $options);
}
public function getName()
{
return 'acme_user_registration';
}
}
Run Code Online (Sandbox Code Playgroud)
但没有工作,没有给我任何错误,并设置标签"fos_user_registration_form_name"