交响乐2。在带有外键的实体上使用 querybuilder 时,如何将外键的 return 值作为 id 序列?
Symfony2. When using querybuilder on entity with foreign keys, how to return values of foreign keys as sequence of ids?
我的存储库中有查询,returns 数组结果:
$result = $qb
->select('partial u.{id, username, email, lastLogin}', 'partial groups.{id}')
->leftJoin('u.groups', 'groups')
->getQuery()
->getArrayResult();
当我在我的 AngularJS 应用程序上请求此查询时,我得到下一个结果:
[
{"id":1,
"username":"Sergio Ivanuzzo",
"email":"my_email@domain.com",
"lastLogin":null,
"groups":[{"id":1}]
}
]
由于 groups
包含对象数组,我无法在我的可编辑指令中解析它们(复选框未选中):
<span
data-pk="{{ user.id }}"
editable-checklist="user.groups"
e-ng-options="g.id as g.name for g in groups"
e-form="rowform">
{{ User.showGroups(user) }}
</span>
当 groups
属性包含类似 [1,2,3] 指令时有效(通常选中复选框)。
因此,为了解决这个问题,我从响应中解析每个用户对象:
angular.forEach(response.data, function(user) {
var groups = [];
angular.forEach(user.groups, function(group) {
groups.push(group.id);
});
user.groups = groups;
});
$scope.users = response.data;
我觉得我可以避免这种解决方法,如果我可以 return groups
每个用户作为数字序列。我怎样才能做到这一点?也许存在更好的方法?
如果您需要额外的数据,请告诉我!非常感谢您的帮助
您可以使用过滤器来保留您的原始数据,例如
$scope.toArray = function(groupsAsObjects) {
var groups = [];
angular.forEach(groupsAsObjects, function(group) {
groups.push(group.id);
});
return groups;
};
和
<span
data-pk="{{ user.id }}"
editable-checklist="user.groups | toArray"
e-ng-options="g.id as g.name for g in groups"
e-form="rowform">
{{ User.showGroups(user) }}
</span>
或者将您的完整对象数组重新映射为这样的数组:
$scope.toArray = function(obj, addKey) {
if (!obj)
return obj;
if (addKey === false) {
return Object.keys(obj).map(function(key) {
return obj[key];
});
} else {
return Object.keys(obj).map(function(key) {
return Object.defineProperty(obj[key], '$key', {
enumerable: false,
configurable: true,
value: key
});
});
}
};
我的存储库中有查询,returns 数组结果:
$result = $qb
->select('partial u.{id, username, email, lastLogin}', 'partial groups.{id}')
->leftJoin('u.groups', 'groups')
->getQuery()
->getArrayResult();
当我在我的 AngularJS 应用程序上请求此查询时,我得到下一个结果:
[
{"id":1,
"username":"Sergio Ivanuzzo",
"email":"my_email@domain.com",
"lastLogin":null,
"groups":[{"id":1}]
}
]
由于 groups
包含对象数组,我无法在我的可编辑指令中解析它们(复选框未选中):
<span
data-pk="{{ user.id }}"
editable-checklist="user.groups"
e-ng-options="g.id as g.name for g in groups"
e-form="rowform">
{{ User.showGroups(user) }}
</span>
当 groups
属性包含类似 [1,2,3] 指令时有效(通常选中复选框)。
因此,为了解决这个问题,我从响应中解析每个用户对象:
angular.forEach(response.data, function(user) {
var groups = [];
angular.forEach(user.groups, function(group) {
groups.push(group.id);
});
user.groups = groups;
});
$scope.users = response.data;
我觉得我可以避免这种解决方法,如果我可以 return groups
每个用户作为数字序列。我怎样才能做到这一点?也许存在更好的方法?
如果您需要额外的数据,请告诉我!非常感谢您的帮助
您可以使用过滤器来保留您的原始数据,例如
$scope.toArray = function(groupsAsObjects) {
var groups = [];
angular.forEach(groupsAsObjects, function(group) {
groups.push(group.id);
});
return groups;
};
和
<span
data-pk="{{ user.id }}"
editable-checklist="user.groups | toArray"
e-ng-options="g.id as g.name for g in groups"
e-form="rowform">
{{ User.showGroups(user) }}
</span>
或者将您的完整对象数组重新映射为这样的数组:
$scope.toArray = function(obj, addKey) {
if (!obj)
return obj;
if (addKey === false) {
return Object.keys(obj).map(function(key) {
return obj[key];
});
} else {
return Object.keys(obj).map(function(key) {
return Object.defineProperty(obj[key], '$key', {
enumerable: false,
configurable: true,
value: key
});
});
}
};