我继承了代码,在模型中,前一个开发人员使用了afterFind,但是当执行afterFind时,如果与该表有多对多的关系,则将其保持打开状态。因此,当从该模型中获取一个元素时,它可以正常工作,但使用关系会破坏它。
public function afterFind($results, $primary = false) {
foreach ($results as $key => $val) {
if (isset($results[$key]['Pitch'])) {
if (isset($results[$key]['Pitch']['expiry_date'])) {
if($results[$key]['Pitch']['expiry_date'] > time()) {
$results[$key]['Pitch']['days_left'] = SOMETHINGHERE;
} else {
$results[$key]['Pitch']['days_left'] = 0;
}
} else {
$results[$key]['Pitch']['days_left'] = 0;
}
为了解决这个问题,我在第二行之后添加了该代码。
// if (!isset($results[$key]['Pitch']['id'])) {
// return $results;
//
有没有更好的方法来解决这个问题?我认为如果没有正确使用,AfterFind会非常危险。