我正在寻找一种方法,使它的蛋糕以相同的格式/结构返回所有数据库数据……目前,它根据关系返回两种不同类型的格式。
如果一个模型'B‘与当前被查询的模型'A’相关联,那么它将把'B‘的模型关联放在它下面,正如你在下面的User中看到的那样。我想要它,以便所有查询都使用该结构。
示例:$this->find('all',....返回:
Array
(
[0] => Array
(
[UserGroup] => Array
(
[id] => 53
[user_id] => 100003332014851
[media_id] =>
[name] => john
[description] => qwasdfad
)
[User] => Array
(
[id] => 100003332014851
[session_id] => ssm2qbrotmm13ho1ipm8ii2492
[username] =>
[password] => -1
[Planner] => Array
(
)
[Purchase] => Array
(
)
[Listing] => Array
(
)
)
)
我想让它看起来像这样:
Array
(
[0] => Array
(
[UserGroup] => Array
(
[id] => 53
[user_id] => 100003332014851
[media_id] =>
[name] => john
[description] => qwasdfad
[User] => Array
(
[id] => 100003332014851
[session_id] => ssm2qbrotmm13ho1ipm8ii2492
[username] =>
[password] => -1
[Planner] => Array
(
)
[Purchase] => Array
(
)
[Listing] => Array
(
)
)
)
)
)
发布于 2012-04-16 00:25:02
在CakePHP中,find()
方法返回的数据与第一种格式类似。但是如果你想像第二个一样格式化,那么你必须手动处理它(如果可能的话,尽量避免这种情况)
$data = $this->find('all');
$assocs = Set::extract('/User', $data); // extracting all `User` array
foreach($assocs as $key => $assoc) {
unset($data[$key]['User']); // removing the associate `User` from `$data`
$data[$key]['UserGroup']['User'] = $assoc['User']; // adding associate under `UserGroup`
}
发布于 2012-04-16 14:43:28
最后做了这个..。它会将输出更改为我们需要的内容。顶层的项目没有标题,这是很好的,我只是调整了我们的脚本为它…如果其他人需要一个自定义的想法,也许这会对他们有所帮助
也不能保证这涵盖了所有可能的结果,但到目前为止,它适用于我们拥有的所有查询。
class AppModel extends Model {
function afterFind($results, $primary) {
//if this is a primary, structure like a secondary so entire site is same format
if ($primary) {
$class = get_class($this);
//simple fix for primary
foreach ($results as $key => $result) {
$result = $this->formatData($result, $class);
$results[$key] = $result;
}
}
return $results;
}
function formatData($result, $class) {
$array = array();
if (isset($result[$class])) {
$array = $result[$class];
unset($result[$class]);
}
$array += $result;
return $array;
}
发布于 2014-12-15 13:27:06
在这种情况下,还可以使用contain和find as UserGroup.User来获得所需的结果
https://stackoverflow.com/questions/10159465
复制相似问题