CakePHP的一个afterFind()帮助
-
26-09-2019 - |
题
我有一个搜索结果像这样在一个阵列
Array
(
[0] => Array
(
[StatusMessage] => Array
(
[id] => 1
[pid] => 0
[message] => First Status Message
[item_id] => 1
[commenters_item_id] => 2
[created] => 2010-10-26 02:09:05
[modified] => 2010-10-26 02:09:09
)
[Item] => Array
(
[id] => 1
[module_id] => 1
[item_id] => 1
[User] => Array
(
[id] => 1
[first_name] => Harsha
[last_name] => Vantagudi
[username] => harshamv
[file] =>
)
)
[StatusMessageReply] => Array
(
[0] => Array
(
[id] => 2
[pid] => 1
[message] => Second Status Message
[item_id] => 1
[commenters_item_id] => 1
[created] => 2010-10-26 02:09:05
[modified] => 2010-10-26 02:09:09
[Item] => Array
(
[id] => 1
[module_id] => 1
[item_id] => 1
[User] => Array
(
[id] => 1
[first_name] => Harsha
[last_name] => Vantagudi
[username] => harshamv
[file] =>
)
)
)
)
)
)
我想修改它,使其由阵列中去除某些事情看起来有点漂亮
Array
(
[0] => Array
(
[StatusMessage] => Array
(
[id] => 1
[pid] => 0
[message] => First Status Message
[item_id] => 1
[commenters_item_id] => 2
[created] => 2010-10-26 02:09:05
[modified] => 2010-10-26 02:09:09
)
[User] => Array
(
[id] => 1
[first_name] => Harsha
[last_name] => Vantagudi
[username] => harshamv
[file] =>
)
[StatusMessageReply] => Array
(
[0] => Array
(
[id] => 2
[pid] => 1
[message] => Second Status Message
[item_id] => 1
[commenters_item_id] => 1
[created] => 2010-10-26 02:09:05
[modified] => 2010-10-26 02:09:09
[User] => Array
(
[id] => 1
[first_name] => Harsha
[last_name] => Vantagudi
[username] => harshamv
[file] =>
)
)
)
)
)
Bascially删除的项部和所述用户移动了一个水平
解决方案
我说的不要。没有人会看到或在意这除了你。而且也没有真正的好处,以改变模型数据的内部格式。相反,它只能导致问题。使你的内部数据格式一致!
无论您使用访问或$statusMessage['Item']['User']
真的$statusMessage['User']
不作太大的区别的用户信息。如果你坚持它虽然,我建议你加入直接users
表通过status_messages
表items
表查询放弃获取该项目的额外的步骤,和蛋糕会自动格式化结果你想要的方式。
其他提示
如果你想限制返回你应该看看Containable
相关表格和或字段。当你有一大堆东西无趣返回你不需要的,你可以通过“包含”它给你想要的东西缓和处理一点。
但作为Deceze说,请不要纯粹修剪它的美观性。
不隶属于 StackOverflow