在单元格内部,我需要访问TreeOptions模型。 所以我写了这个:
>>> list1 = [
... ['a', 'apple'],
... ['b', 'banana'],
... ['m', 'mango']
... ]
>>>
>>> list2 = [
... ['b', 'buffalo'],
... ['zzzz', 'zzzzegemot, a sleeping behemoth'],
... ['m', 'mongoose']
... ]
>>>
>>> d1, d2 = dict(list1), dict(list2)
>>> common_keys = set(d1) & set(d2) # => {'b', 'm'} keys that appears in both dicts.
>>> [[d1[k], d2[k]] for k in common_keys]
[['banana', 'buffalo'], ['mango', 'mongoose']]
但是当我按照这样做时,
$this->loadModel( 'TreeOptions' );
$i = $this->TreeOptions->find( 'all' );
它只返回结果的最后一条记录。 我发现使其按预期工作的唯一方法是添加限制条款:
foreach( $i as $row )
debug( $row->description );
然后,我可以获得整套记录。 我错过了什么?
感谢。 问候。
答案 0 :(得分:2)
在您的第一个代码段中,变量$i
是查询尚未运行的状态。请参阅CakePHP 3 Cookbook: Retrieving Data & Results — Using Finders to Load Data的摘录:
// Find all the articles.
// At this point the query has not run.
$query = $articles->find('all');
// Iteration will execute the query.
foreach ($query as $row) {
}
// Calling all() will execute the query
// and return the result set.
$results = $query->all();
// Once we have a result set we can get all the rows
$data = $results->toArray();
// Converting the query to an array will execute it.
$results = $query->toArray();