Merge pull request #14455 from civicrm/5.14
[civicrm-core.git] / CRM / Core / Reference / Basic.php
index 572e96305879800c1dbfdba0aa0188b02545351a..a3e1fe73f8a717ca9423c0fdfebfd200c5c7cca9 100644 (file)
@@ -78,11 +78,16 @@ class CRM_Core_Reference_Basic implements CRM_Core_Reference_Interface {
    */
   public function findReferences($targetDao) {
     $targetColumn = $this->getTargetKey();
-    $params = array(
-      1 => array($targetDao->$targetColumn, 'String')
-    );
+    $select = 'id';
+    // CRM-19385: Since id is removed, return all rows for cache tables.
+    if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists($this->getReferenceTable(), 'id')) {
+      $select = '*';
+    }
+    $params = [
+      1 => [$targetDao->$targetColumn, 'String'],
+    ];
     $sql = <<<EOS
-SELECT id
+SELECT {$select}
 FROM {$this->getReferenceTable()}
 WHERE {$this->getReferenceKey()} = %1
 EOS;
@@ -99,21 +104,22 @@ EOS;
    */
   public function getReferenceCount($targetDao) {
     $targetColumn = $this->getTargetKey();
-    $params = array(
-      1 => array($targetDao->$targetColumn, 'String')
-    );
+    $params = [
+      1 => [$targetDao->$targetColumn, 'String'],
+    ];
     $sql = <<<EOS
-SELECT count(id)
+SELECT count(*)
 FROM {$this->getReferenceTable()}
 WHERE {$this->getReferenceKey()} = %1
 EOS;
 
-    return array(
-      'name' => implode(':', array('sql', $this->getReferenceTable(), $this->getReferenceKey())),
+    return [
+      'name' => implode(':', ['sql', $this->getReferenceTable(), $this->getReferenceKey()]),
       'type' => get_class($this),
       'table' => $this->getReferenceTable(),
       'key' => $this->getReferenceKey(),
-      'count' => CRM_Core_DAO::singleValueQuery($sql, $params)
-    );
+      'count' => CRM_Core_DAO::singleValueQuery($sql, $params),
+    ];
   }
+
 }