我已经建立了多个实体,并在各自的存储库中正常工作。但是,在不希望填充代理的地方,Doctrine似乎会填充代理。
我有一个名为Item的实体,该实体通过具有$category_id
和$category
字段来引用类别。后者与@ORM\ManyToOne()
和@ORM\JoinColumn()
建立了关系,可以正常工作。
在我的控制器中,当我查询项目时,我会收到一个包含相关类别代理的项目列表,可以从响应中删除这些列表,将其标识为代理。但是,如果由于某种原因,我还在不相关的查询中查询类别,则与项目相关的查询返回的不是代理而是实际的水合类别实例,这是我不希望的。
$this->categoryRepository->findBy(...);
...
$items = $this->itemRepository->findBy(...);
return $this->respond($items);
在这里,$ items [0]->类别将在执行到达return语句时由框架填充。
是否可以关闭此行为?
答案 0 :(得分:0)
您可以将一种关系的var box = null;
var touchobj = null;
var position = {'x':0, 'y':0};
var positionbox = {'x':0, 'y':0};
// init touch
$('.modal-header').on('touchstart', function(e){
box = $(this).closest('.modal-dialog');
touchobj = e.changedTouches[0];
// take position touch cursor
position['x'] = touchobj.pageX;
position['y'] = touchobj.pageY;
//take original position box to move with touch
positionbox['x'] = parseInt(box.css('left'));
positionbox['y'] = parseInt(box.css('top'));
e.preventDefault();
});
// on move touch
$('.modal-header').on('touchmove', function(e){
var dist = {'x':0, 'y':0};
touchobj = e.changedTouches[0];
// we calculate the distance of move
dist['x'] = parseInt(touchobj.clientX) - position['x'];
dist['y'] = parseInt(touchobj.clientY) - position['y'];
// we apply the movement distance on the box
box.css('left', positionbox['x']+dist['x'] +"px");
box.css('top', positionbox['y']+dist['y'] +"px");
e.preventDefault();
});
策略指定为fetch
,这将在执行时获取最少的日期。根据{{3}}:
在Doctrine 2.1中,为关联引入了一个称为“额外延迟”的功能。关联默认情况下被标记为“惰性”,这意味着关联的整个集合对象是在首次访问时填充的。
因此,在您的EXTRA_LAZY
批注中,向其他变量添加一个参数:@ORM\ManyToOne()
。