permissionable
permissionable copied to clipboard
drops belongsTo relationships when fields=>null
example: $this->Model->read(null, $id)
fix:
if (is_array($queryData['fields'])) {
$queryData['fields'][] = "{$alias}.*";
} elseif(!empty($queryData['fields'])) {
$queryData['fields'] = array(
$queryData['fields'],
"{$alias}.*"
);
} else {
$queryData['fields'] = array(
"{$Model->alias}.*",
"{$alias}.*"
);
// add this line in behavior to fix if (isset($Model->belongsTo)) { $belongsToModels = array_keys($Model->belongsTo); foreach( $belongsToModels as $belongsTo_alias ){ $queryData['fields'][] = $belongsTo_alias.'.*'; } }
}
try this instead:
if ( $Model->recursive > -1 && isset($Model->belongsTo)) {
$belongsToModels = array_keys($Model->belongsTo);
foreach( $belongsToModels as $belongsTo_alias ){
$queryData['fields'][] = $belongsTo_alias.'.*';
}
}
The problem is also present when you use both Containable + Permissionable and expect to add fields from Containable. $options = array( 'contain'=>array('Owner.id', 'Owner.username'), 'fields'=>'Group.*', // MUST ADD 'fields' for containable+permissionable // 'permissionable'=>false, 'conditions'=>array('Group.id'=>$id), );