CakePHP 2.x: действительно ли полезен флаг $ primary в Model :: afterFind ()?
CakePHP-Model::afterFind()
обратный вызов выглядит так:
afterFind(array $results, boolean $primary = false)
Согласно документации:
$primary
Параметр указывает, была ли текущая модель моделью, с которой был создан запрос, или же эта модель была запрошена как ассоциация. Если модель запрашивается как ассоциация, формат$results
может отличаться.
OниМожно отличаются, но эксперимент показывает, что они невсегда отличаются. Насколько я могу судить,$primary
параметр isn 'на самом деле все это полезно. Если оно'установлен наfalse
вы можете или не можете получить плоскую структуру данных, так что вы можете или не можете оказаться с ужасом "не может использовать смещение строки как массив сообщение об ошибке.
Хотя у меня нетЯ еще не пробовал, но в основе документации лежало игнорирование$primary
отметьте все вместе и просто проверьте данные:
public function afterFind($results, $primary = false) {
if (array_key_exists(0, $results) {
// operate on $results[0]['User']['fieldname']
} else {
// operate on $results['fieldname']
}
return $results;
}
Это хакерское и я неМне это нравится, но, вероятно, это будет более полезным, чем.$primary
Явно изложены мои вопросы:
Что$primary
флаг на самом деле полезен для?Я прав, что этоне полезно для определения структуры$results
массив или я что то там пропустил?