有没有办法将$this-〉find('all')数组格式化为视图中的$this-〉find('list')?我问这个问题的原因是,我可以将新数组传递到表单帮助器选项中,然后使用$this-〉find('all')数组构建一些我需要的附加内容?
Array (
[0] => Array ( [School] => Array ( [id] => 0 [name] => Nature [address] => 112 Main [max_students] => 25 [application_level] => 5 ) )
[1] => Array ( [School] => Array ( [id] => 1 [name] => Math [address] => 112 Smith [max_students] => 25 [application_level] => 0 ) )
[2] => Array ( [School] => Array ( [id] => 2 [name] => Art [address] => 112 Lane [max_students] => 25 [application_level] => 0 ) )
)
这是我执行find('all')时得到的数组,我想构建如下的数组:
Array (
[0] => 'Nature'
[1] => 'Math'
[2] => 'Art'
)
这通常是由$this-〉find('list')函数完成的。虽然我想要整个数组的原因是因为我需要将application_level添加到$this-〉Form-〉input()函数中。这是因为我需要添加class选项并附加应用程序级别,所以我只显示基于先前选择的应用程序级别的节目。
编辑:我不能只做$this-〉find('list',[在这里插入参数?]);?我只是不明白您是如何设置附加参数的?
4条答案
按热度按时间iaqfqrcu1#
如果您的查询不是太复杂,也不会返回过多的结果,那么只需运行两次(一次用于查找全部,一次用于查找列表)。
查找所有、列表、第一个、根据您传入的参数相同的内容。例如:
......您可以将
all
替换为list
。在您的情况下,最简单的方法可能是执行两次,每次一次。如下所示:否则,您可以循环遍历它并填充您自己的列表:
简短地回答您的问题是,没有一种快速、简单的方法可以从同一个查询中选择
all
和list
,但是您可以通过将参数(条件、顺序等)作为预定义数组传入来重用它们,或者填充您自己的列表。tct7dpnv2#
使用CakePHP的hash实用程序从find('all ')的结果创建类似find('list')格式的结果的另一种方法是:
rjjhvcjd3#
为了改进kai的答案,Hash类有一个名为合并的方法,它可以在一行代码中完成您要做的事情
$list
将是类似于来自find('list')
的数据的平面阵列;g2ieeal74#
在CakePHP 3和4中,你可以做以下事情:
参见: