将两个不同的模型组合在数组中进行排序,引用的模型丢失


Combine Two Different Models in Array for Sorting, Referenced Models Lost

我有两个模型,新闻和项目。新闻有一个参考模型,部分。项目具有引用的模型"子组"。"新闻"和"项目"都有一个"已创建"字段。我想在我的主页上显示最后 5 个新闻项目项目。

所以我找到了这篇文章,并按照它所说的做了,即:

$newsAndProjects = array();
$news = $this->News->find( ... );
foreach ($news as $k => $v) {
    $newsAndProjects[] = $v['News'];
}
$projects = $this->Project->find( ... );
foreach ($projects as $k => $v) {
    $newsAndProjects[] = $v['Project'];
}
if (sizeof($newsAndProjects) > 1) {
    $newsAndProjects = Set::sort($newsAndProjects, '/created', 'DESC');
}

我认为它工作得很好。但是当我尝试访问引用的新闻或项目模型时,出现错误。

注意到的是,而我曾经能够做到这一点:

$news['News']['title']
$news['News']['Section']

$projects['Project']['title']
$projects['Project']['SubGroup']

。进入$newsAndProjects数组后,我必须直接访问模型,即:

$newsAndProjects['title']

我什至不再有"部分"或"子组"模型,而是:

$newsAndProjects['section_id']
$newsAndProjects['sub_group_id']

。这意味着我无法再访问例如部分或子组名称、ID 等。

如何取回此信息?

真是个假人。我想通了。我对 Cake 和 php 数组的不熟悉是问题所在。

我引用的模型没有显示,因为我正在这样做

$newsAndProjects[] = $v['News'];
$newsAndProjects[] = $v['Project'];

而不是这个

$newsAndProjects[] = $v;
$newsAndProjects[] = $v;

即。我只是将"根"模型(新闻或项目)放在$newsAndProjects数组中,而不是$v整个模型对象及其相应的引用模型。

希望这篇文章有一天能为某人节省一些时间。