2016-01-29 73 views
0

在我的数据库中修改的结果是有内容表,从该表中获取数据时,我想追加场网址的结果,这是基于字段,包含在表中。无论如何,我已经看到了在CakePHP的早期版本中使用此表的模型的行为,然后在行为类中修改afterFind回调中的结果的方法。但是在版本3中没有afterFind回调,他们推荐在手册中使用mapReduce()方法,但是这种方法在手册中很少解释,我不知道如何使用mapReduce()来实现。CakePHP的3:从数据库

+0

你也可以创建虚拟财产网址http://book.cakephp.org/3.0/en/orm/entities.html#creating-virtual-properties –

+0

感谢您的提示 –

回答

1

的研究一点后,我认识到,将网址场场找到结果的最佳方法是使用formatResults方法,所以这是我在我的发现者做:

$query->formatResults(function (\Cake\Datasource\ResultSetInterface $results) { 
       return $results->map(function ($row) { 
        $row['url'] = array(
         'controller' => 'content', 
         'action' => 'view', 
         $row['slug'], 
         $row['content_type']['alias'] 
        ); 
        return $row; 
       }); 
      });