如何添加到CakePHP3结果集?

u2nhd7ah  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(232)

我有一个查询(一个Query对象):

$joblineitems = $this->JobLineItems->find('all');

它具有结果(ResultSet对象):

$joblineitemsresults = $joblineitems->all();

ResultSet对象是一个Iterable对象,因此foreach()循环将返回每个JobLineItem对象。
我只是想在$joblineitemsresults中添加一个额外的结果--特别是我想在结果的末尾附加一个$this-〉JobLineItems-〉newEntity(),这样当我随后对$joblineitemsresults分页并在视图中循环时,最后一页上循环中的最后一个对象将是一个空对象,其属性为new=true。
如何手动将额外的结果追加到ResultSet对象?

piwo6bdm

piwo6bdm1#

试试这个

$joblineitems = $this->JobLineItems->find('all');
$joblineitemsresults = $joblineitems->all();

$joblineitemsresults = $joblineitemsresults ->append([$this->JobLineItems->newEntity()]);
debug($joblineitemsresults ->toList());

您可以查看手册以供参考
尤其要注意最后一段
当从不同的源追加时,您可以预期两个集合中的某些键是相同的。例如,当追加两个简单数组时。这在使用toArray将集合转换为数组时可能会出现问题()。如果您不希望某个集合中的值根据键覆盖前一个集合中的其他值,请确保调用toList()以删除键并保留所有值。
这就是为什么我使用toList()而不是toArray()的原因。如果你使用toArray(),你会看到新的实体覆盖了第一个实体。
当然,您也可以转换数组中的记录集,然后将新实体追加到数组中

$joblineitemsresults = $joblineitems->toArray();
joblineitemsresults[] = $this->JobLineItems->newEntity();

相关问题