2016-01-29 69 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; 
       }); 
      });