我有一个查询(一个Query对象):
$joblineitemsresults = $joblineitems->all();
它有结果(ResultSet对象):
gem "carrierwave", "~> 0.11.0"
gem 'carrierwave-aws', "~> 1.0.1"
gem "unf", "~> 0.1.4"
ResultSet对象是一个Iterable,foreach()循环将返回每个JobLineItem对象。
我只是想在$ joblineitemsresults中添加一个额外的结果 - 特别是我想在结果的末尾附加一个$ this-> JobLineItems-> newEntity(),这样当我随后对$ joblineitemsresults进行paginate并循环时在视图中,最后一页循环中的最后一个对象将是一个空白对象,其属性为new = true。
如何手动将额外结果附加到ResultSet对象?
答案 0 :(得分:1)
试试这个
$joblineitems = $this->JobLineItems->find('all');
$joblineitemsresults = $joblineitems->all();
$joblineitemsresults = $joblineitemsresults ->append([$this->JobLineItems->newEntity()]);
debug($joblineitemsresults ->toList());
您可以看到manual来自参考
特别注意最后一段
从不同来源追加时,您可以期待一些密钥 两个集合都是一样的。例如,当附加两个 简单的数组。转换集合时,这可能会出现问题 使用toArray()到一个数组。如果你不想要一个值 集合根据其键覆盖前一个中的其他集合, 确保调用toList()以删除键和 保留所有价值观。
这就是我使用toList()
代替toArray()
的原因。如果您使用toArray()
,您会看到新实体覆盖第一个实体。
当然,您也可以在数组中转换记录集,然后将新实体附加到数组
$joblineitemsresults = $joblineitems->toArray();
joblineitemsresults[] = $this->JobLineItems->newEntity();