我正在使用Symfony 2.6并需要发布相当大量的数据(~95000 +字节).发布到服务器工作正常,我使用我的Symfony控制器访问我发布的数据
$request->get('myData')
Run Code Online (Sandbox Code Playgroud)
但是,只有部分对象实际上转发到我的控制器.我可以在Symfony分析器上看到这个,它向我展示了对象和实际原始发布的表单编码数据.表单编码数据是完整的,而对象在某些时候就会崩溃.因此,由于服务器接收到所有数据,因此不能由PHP POST限制引起.
这是我的对象具有的格式(由Symfony Profiler格式化):
[
0 => [
firstKey => firstValue0,
secondKey => secondValue0,
thirdKey => thirdValue0
]
1 => [
firstKey => firstValue1,
secondKey => secondValue1,
thirdKey => thirdValue1
]
...etc...
333 => [
firstKey => firstValue333,
secondKey => secondValue333
]
]
Run Code Online (Sandbox Code Playgroud)
数组中的所有对象都应该具有相同的三个键.另外,通过查看原始发布的内容,应该有800个条目.但是,正如您所看到的,Symfony停止在条目333处解释输入,甚至不完全解释这个输入,因为它缺少最后一个键值对.
这让我觉得Symfony对它将要执行的输入解析量有限制.有谁知道我可以在哪里调整这个限制?或者还有其他我可能做错的事情?
我有一个使用Symfony 2并包含Doctrine 2实体的项目.其中一些实体彼此相关.此关联由注释定义:
/**
* @ORM\OneToMany(targetEntity="Event", mappedBy="firstEntityId" cascade={"persist", "remove"})
* @ORM\OrderBy({"dateEnd" = "DESC", "dateBegin" = "DESC"})
*/
private $events;
Run Code Online (Sandbox Code Playgroud)
如您所见,此关联包含多个具有开始和结束日期的事件.在检索此集合时,我希望最多的事件(即那些尚未结束或最近结束的事件)先排序.
当前方法的问题在于它将NULL在所有其他事件之后对结束日期进行排序.
如何告诉Doctrine以结束日期为NULL先排序事件,然后按降序结束日期对剩余事件进行排序?
到目前为止,我已经看到了几个关于如何告诉Doctrine如何订购实体的问题.但是,他们都没有提到注释.例如在Doctrine 2 Order By ASC中建议的反转符号的技巧和最后的Null值不起作用,因为Doctrine不接受除属性名称和/ ASC或DESC注释之外的任何内容.
在Symfony配置中有一个条目framework.session.storage_id.此设置也出现在Symfony配置文档的默认配置中,但未对其进行说明.我的假设是它定义了会话数据存储在服务器端的位置.
我在这个条目中看到的值包括session.storage.mock_file,session.storage.native和session.storage.filesystem.我不确定这些值究竟意味着什么(例如模拟文件和文件系统之间有什么区别?)并且还认为这不是可能值的完整列表.
那么这个配置密钥控制究竟是什么以及哪些值有效?
自VS 2010以来,我一直在使用Entity Framework模型.当我构建项目时,EF会生成一个包含所有实体的Model.Designer.cs文件.此设计器文件还包含添加到EDMX文件中的实体的文档.
当我在VS 2012中创建新的EF模型第一个项目时,Model.tt文件被添加到我的EDMX文件中.此T4模板为模型中的每个实体生成单个文件.遗憾的是,EDMX文件中的文档未在生成的代码中使用.
我非常喜欢记录我的模型,因此IntelliSense在使用时会显示出来.到目前为止我找到的唯一解决方法是删除Model.tt和生成的类文件,然后重新启动我的EDMX文件上的代码生成.这将恢复到我在VS 2010中使用的行为.但是,我希望每个实体都有一个单独的文件.
有没有办法(最好使用VS工具而不必修改VS附带的任何文件)在生成的单个类文件中包含EDMX文件中的文档?
编辑:为了进一步说明我的问题,这是一个简单的例子.
假设我的模型看起来像这样:
我在Id属性的Properties窗口中突出显示了我输入文档的部分.
这是EDMX文件中实体的样子:
<EntityType Name="Entity1">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" annotation:StoreGeneratedPattern="Identity" >
<Documentation>
<Summary>This is documentation for the ID property.</Summary>
</Documentation>
</Property>
</EntityType>
Run Code Online (Sandbox Code Playgroud)
Model.tt生成的类(Entity1.cs)如下所示:
public partial class Entity1
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是当我为我的模型打开代码生成时,这就是实体在Model.Designer.cs中的样子:
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="Model1", Name="Entity1")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Entity1 : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new …Run Code Online (Sandbox Code Playgroud) code-generation entity-framework visual-studio-2012 ef-model-first
考虑以下代码:
public int DownloadSoundFile()
{
using (var x= new X())
{
return x.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
而这段代码:
public int DownloadSoundFile()
{
if (x!=null)
{
return x.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
第一个代码没有给我们任何编译时错误,但在第二个代码中我们得到这个错误:
并非所有代码路径都返回一个值
这意味着我们应该返回if范围之外的值.
为什么我们必须返回if范围之外的值,但不需要返回using范围之外的值?
我正在使用boost::fibonacci_heapBoost 1.53.0 中的类来维护可更新的优先级队列。
当我想要更新一个元素时,我需要将堆中的元素与我想要替换它的新元素进行比较。我只想用“较小”版本替换堆中的元素,因此我想在更新之前对它们进行比较。
当我插入元素时,我存储它们的句柄(boost::fibonacci_heap::handle_type)。我在文档fibonacci_heap中看到的所有采用句柄类型的函数仅提供某种写访问权限(update()、decrease()等increase()),并且不允许我在更新句柄之前检查句柄标识的元素。
fibonacci_heap有没有什么方法可以仅使用句柄来查看 a 中的元素?
我有一个set的unique_ptr情况,并希望他们都作为参数传递给函数.以下代码演示的示例.
#include <memory>
#include <set>
#include <vector>
using std::set;
using std::unique_ptr;
using std::vector;
void doStuff(unique_ptr<int> ptr)
{
// doing stuff...
}
int main()
{
vector<unique_ptr<int>> ptrVector;
set<unique_ptr<int>> ptrSet;
for (auto cur = ptrVector.begin(); cur != ptrVector.end(); cur++)
{
doStuff(std::move(*cur));
}
for (auto cur = ptrSet.begin(); cur != ptrSet.end(); cur++)
{
doStuff(std::move(*cur));
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这会导致以下编译器错误(GCC 4.8.1):
uptrfncall.cpp: In function ‘int main()’: uptrfncall.cpp:27:25: error: use of deleted function ‘std::unique_ptr::unique_ptr(const std::unique_ptr&) [with _Tp = int; _Dp = …
我用cocos2dx.当我使用它的类时,我需要cocos2d::经常键入,除非我输入using namespace cocos2d;.
如何避免不断重复命名空间?
我正在开发一个项目,需要从数据文件中加载许多对象并将它们存储在内存中.因为我被告知堆栈空间很少并且堆上的数据量应该更多,所以我把所有内容放在堆上.但是,我的印象是我过度了一点.
我目前的设计如下:
class RoadMap
{
unique_ptr<set<unique_ptr<Node>>> allNodes;
void addNode(unique_ptr<Node> node)
{
this->allNodes->insert(std::move(node));
}
}
int main()
{
unique_ptr<RoadMap> map(new RoadMap());
// open file etc.
for (auto nodeData : nodesInFile)
{
map->addNode(unique_ptr<Node>(new Node(nodeData)));
}
}
Run Code Online (Sandbox Code Playgroud)
从我现在所理解的,这会产生很多开销,因为我认为我不需要涉及许多独特的指针.如果我理解正确,在"指针链"中只有一个唯一的指针屏障就足够了.但是,我不确定这样做的最佳做法是什么.
class RoadMap
{
unique_ptr<set<Node>> allNodes;
void addNode (Node node)
{
this->allNodes->insert(node);
}
}
int main()
{
RoadMap map;
//open file etc.
for (auto nodeData : nodesInFile)
{
map.addNode(Node(nodeData));
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的好处在于,RoadMap类本身是唯一需要处理堆分配的类,并且在创建时只需要一次set.
class RoadMap
{
set<Node> allNodes;
void addNode (Node …Run Code Online (Sandbox Code Playgroud) 我有以下代码.
Serilog.ILogger logger = Serilog.Log.Logger;
logger = new LoggerConfiguration()
.WriteTo.Sink(new FileSink(@"c:\temp\mylogs.txt", new JsonFormatter(), null)).MinimumLevel.Debug()
.CreateLogger();
var newType = new MyType() { Game = "Poker", HasValue = false, Name = "Dave", TimeOfEntry = DateTime.Now.AddDays(-1) };
logger.Debug("This is the new type {NewType} generated at {Time}", newType, DateTime.Now);
Run Code Online (Sandbox Code Playgroud)
日志文件显示如下
{"Timestamp":"2015-02-11T00:53:51.8501574-05:00","Level":"Debug","MessageTemplate":"This is the new type {NewType} generated at {Time}","Properties":{"NewType":"ConsoleTestApp.MyType","Time":"2015-02-11T00:53:51.8491563-05:00"}}
Run Code Online (Sandbox Code Playgroud)
在日志文件输出中没有意义的部分是这样的:
{"NewType":"ConsoleTestApp.MyType", ...
Run Code Online (Sandbox Code Playgroud)
我期待这样的事情.
{"NewType": {Game = "Poker", HasValue = false, Name = "Dave", ...
Run Code Online (Sandbox Code Playgroud)
我做错什么了吗?