我正在学习http://docs.doctrine-project.org/en/latest/reference/working-with-associations.html,但我无法弄清楚级联合并的作用.我在其他地方看到过
$new_object = $em->merge($object);
Run Code Online (Sandbox Code Playgroud)
基本上创建一个新的托管对象$object
.那是对的吗?
我是Symfony2的新手,我想知道prePersist和preUpdate事件有什么不同.看起来prePersist在"坚持"记录之前被"解雇",但是什么时候preUpdate会被解雇?
我添加了一个自定义类型:
namespace My\SuperBundle\Types;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Platforms\AbstractPlatform;
class Money extends Type
{
const MONEY = 'money';
public function getSqlDeclaration(
array $fieldDeclaration,
AbstractPlatform $platform
) {
return 'DECIMAL(10,2)';
}
public function getName()
{
return self::MONEY;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序启动:
namespace My\SuperBundle;
use Doctrine\DBAL\Types\Type;
use My\SuperBundle\Types\Money;
class MyBSuperBundle extends Bundle
{
public function boot()
{
//add custom quantity and wight types
$em = $this->container->get('doctrine.orm.entity_manager');
if(!Type::hasType(Money::MONEY)) {
Type::addType(Money::MONEY, 'My\SuperBundle\Types\Money');
}
}
}
Run Code Online (Sandbox Code Playgroud)
但每次我用以下内容更新数据库:
php app/console doctrine:schema:update --dump-sql
Run Code Online (Sandbox Code Playgroud)
我一直得到以下内容:
ALTER TABLE product_price CHANGE …
Run Code Online (Sandbox Code Playgroud) 有时我的Rails应用程序可能因任何错误而崩溃,并且在生产时访问特定URL时,有人可能会登陆/500.html页面.
一切都很正常.我们可以通过日志查看问题是什么然后修复.但是,为了正确查看页面,我们必须清除浏览器缓存,否则我们会再次重定向到/500.html
反正有没有阻止它?
我在下面描述一个示例工作流:
我们可以在Rails或Nginx配置中做些什么,这样我就不必在更改Rails应用程序后清除浏览器缓存了吗?
nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; …
Run Code Online (Sandbox Code Playgroud) 在我的表单构建器中,使用实体选择字段,我可以通过以下方式检索实体的内容:
$ builder-> add('manufacturer','entity',array('class'=>'Manufacturer'....
一切正常,选择框在视图中正确呈现.但是,我想在选择框中添加一个名为"添加新"的额外选项(它不会映射到实体),这会产生一个带有制造商选项的选择框以及最后一个添加新选项的选项框.Symfony2最好的方法是什么?
我想知道如果有条件,是否有办法重定向所有请求.例如,如果我有一个具有websiteDisabled = true的实体User.据我所知,您无法从服务重定向.还有其他方法吗?