我想基于存储在DB中的动态参数创建表单.所以我创建了一个名为Parameter的实体来定义参数名称,该实体应该显示为表单字段标签.
/**
* @ORM\Entity
*/
class Parameter
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length="255")
* @Assert\NotBlank()
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="ParameterValue", mappedBy="parameter")
*/
protected $values;
Run Code Online (Sandbox Code Playgroud)
特定对象(公司对象)的参数值即将存储在ParameterValue表格中.
/**
* @ORM\Entity
*/
class ParameterValue
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Parameter", inversedBy="values")
* @ORM\JoinColumn(name="parameter_id", referencedColumnName="id", nullable=false)
*/
protected $parameter;
/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="parameters")
* @ORM\JoinColumn(name="company_id", referencedColumnName="id", nullable=false)
*/
protected $company;
Run Code Online (Sandbox Code Playgroud)
当然,公司实体包含参数属性,该属性仅存储已为公司指定的参数.
/**
* @ORM\Entity
*/
class …Run Code Online (Sandbox Code Playgroud) 我想在自定义存储库类中计算距离.问题是Doctrine在处理ACOS函数时抛出异常:
[Syntax Error] line 0, col 70: Error: Expected known function, got 'ACOS'
Run Code Online (Sandbox Code Playgroud)
这是查询:
public function findLocation($latitude, $longitude)
{
$em = $this->getEntityManager();
return $em->createQueryBuilder()
->select('((ACOS(SIN('.$latitude.' * PI() / 180) * SIN(p.latitude * PI() / 180) + COS('.$latitude.' * PI() / 180) * COS(p.latitude * PI() / 180) * COS(('.$longitude.' – p.longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance')
->from('StrictPlaceBundle:Poi', 'p')
->add('orderBy', 's.distance ASC')
->getQuery()->getResult();
}
Run Code Online (Sandbox Code Playgroud)
有什么不对?
如何在symfony2实体中设置小数精度和小数位?我在我的实体中使用十进制数据类型在经度字段中定义了纬度,如下所示:
/**
* @ORM\Column(type="decimal", precision="10", scale="6", nullable=true)
*/
protected $latitude;
Run Code Online (Sandbox Code Playgroud)
当持久化新对象时,它正确地保存十进制(我可以在phpMyAdmin中看到52.406374).但是,当显示编辑表单时,数字将四舍五入为52,406,更新后将其存储在mysql中,如52.406000.我的Doctrine配置可能有问题,但我不知道是什么.
为什么纬度和经度会变圆?
找到了解决方案:
Symfony的Form组件将十进制表单字段呈现为type ="text".使用时:
->add('latitude', 'number', array(
'precision' => 6,
))
Run Code Online (Sandbox Code Playgroud)
它渲染得很好.评论中的帖子没有描述我的问题.我猜他们已经修复了'转换为浮点'精度的错误.当我在树枝模板中显示纬度时,它显示正确的(非圆形)值.
在我的配置文件中,我定义了自定义实体管理器:
parameters:
doctrine.orm.entity_manager:
class: Strict\UserBundle\Entity\Manager\MyEntityManager
Run Code Online (Sandbox Code Playgroud)
是一种注入/添加@session服务(我需要访问getLocale()方法)到这个实体管理器的方法吗?我试过这个:
parameters:
doctrine.orm.entity_manager:
class: Strict\UserBundle\Entity\Manager\MyEntityManager
arguments:
session: "@session"
Run Code Online (Sandbox Code Playgroud)
但它抛出了这个异常:
InvalidArgumentException: You cannot dump a container with parameters that contain references to other services (reference to service "session" found in "/doctrine.orm.entity_manager/arguments/session").
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
今天我意识到FB登录按钮不再在chrome中正确呈现(可能是因为浏览器更新 - 谁知道).在IE和Chrome中查看此http://goo.gl/mK6sf网站.每个按钮在chrome中都有一些额外的"padding-top",iframe没有正确隐藏.这是png预览http://goo.gl/sfUl5
编辑 如何让FB登录按钮像IE一样正确呈现?你在其他网站上看到类似的问题吗?Facebook改变了什么或者是Chrome的责任吗?
EDIT2 2013-01-16 看看这个帖子:https://developers.facebook.com/bugs/592452207446912这可能是Facebook API错误.我会在修复时发布回复.
我想知道是否有可能(我希望是这样)设置从onGetPosition读取的初始化相机旋转?
我的onGetPosition函数如下所示:
function onGetPosition() {
console.log({
Yaw: worldRenderer.camera.rotation.y * 180 / Math.PI,
Pitch: worldRenderer.camera.rotation.x * 180 / Math.PI,
x: worldRenderer.camera.rotation.x,
y: worldRenderer.camera.rotation.y,
z: worldRenderer.camera.rotation.z
});
...
}
Run Code Online (Sandbox Code Playgroud)
我用这个图像作为纹理:

default_yaw设置为0度的初始视图如下所示:
在此位置onGetPosition返回:
{Yaw: 0, Pitch: -0, x: -0, y: 0, z: -0}
然后我旋转场景以查看此位置(左侧约90度):
onGetPosition返回:
{Yaw: 75.66036892219512, Pitch: -42.97581864568984, x: -0.7500695341072581, y: 1.3205225509658982, z: 0.7343037709331535}
我想如果我在setDefaultYaw_函数中设置相机旋转,我会看到最后一个视图,所以我这样做:
WorldRenderer.prototype.setDefaultYaw_ = function(angleRad) {
...
this.camera.setRotationFromEuler(new THREE.Euler(-0.7500695341072581, 1.3205225509658982, 0.7343037709331535, 'XYZ'));
};
Run Code Online (Sandbox Code Playgroud)
不幸的是没有发生任何事情我仍然在init上看到第二张图片的视图 我该如何解决?
大家.我有2个实体City和POI.映射看起来像这样:
class City {
/**
* @ORM\ManyToMany(targetEntity="POI", mappedBy="cities")
* @ORM\OrderBy({"position" = "ASC"})
*/
protected $pois;
Run Code Online (Sandbox Code Playgroud)
和
class POI {
/**
* @ORM\ManyToMany(targetEntity="City", inversedBy="pois")
* @ORM\JoinTable(name="poi_cities")
*/
protected $cities;
Run Code Online (Sandbox Code Playgroud)
我想使用QueryBuilder获取与某个城市至少有1个关联的所有POI.我应该使用exists()函数,但我不知道如何安静.