$AdminAlerts = TableRegistry::get('AdminAlert')->find();
$AdminAlerts = $AdminAlerts->join([
'table' => 'property',
'alias' => 'pr',
'type' => 'LEFT',
'conditions' => 'related_id = pr.id AND type = "property"',
]);
$AdminAlerts = $AdminAlerts->join([
'table' => 'publisher',
'alias' => 'pu',
'type' => 'LEFT',
'conditions' => 'related_id = pu.id AND type = "publisher"',
]);
$relatedName = $AdminAlerts->newExpr()
->addCase(
[$AdminAlerts->newExpr()->add(['type' => 'property']),
$AdminAlerts->newExpr()->add(['type' => 'publisher'])],
[ new IdentifierExpression('pr.name'), new IdentifierExpression('pu.name')]
);
$AdminAlerts = $AdminAlerts->select(['id','related_id','type','title','message','name' => $relatedName]);
Это сработало