2012-04-13 7 views

Antwort

6

OK, ich habe eine Lösung gefunden, während ich durch die API documentation ging. Ich kann meinen eigenen "Model Formatter" setzen, was bedeutet, dass ich eine Klasse erstellen kann, die dafür zuständig ist, den Namen einer Tabelle mit dem Namen einer Klasse zu verbinden. Mein RedBean-Setup-Code sieht jetzt so aus:

# Redbean 
require('vendor/redbean/rb.php'); 

R::setup("mysql:host=".MYSQL_HOST.";dbname=".MYSQL_DATABASE.";", 
     MYSQL_USERNAME, MYSQL_PASSWORD); 

# Set custom model formatter 
class CustomRedBeanModelFormatter implements RedBean_IModelFormatter 
{ 
    public function formatModel($model) 
    { 
     switch($model) 
     { 
      case foo\bar\OmniDataManager::TABLE_DATA: 
       return 'foo\bar\OmniDataModel'; 
      case foo\bar\OmniDataManager::TABLE_GROUP: 
       return 'foo\bar\OmniDataGroupModel'; 
      default: 
       return false; 
     } 
    } 
} 
$customRedBeanModelFormatter = new CustomRedBeanModelFormatter(); 
RedBean_ModelHelper::setModelFormatter($customRedBeanModelFormatter); 

Es ist ein bisschen eine hässliche Lösung. Ich würde viel lieber der Lage sein, so etwas zu tun:

RedBean_ModelHelper::setModelForTable($modelName, $tableName); 

Aus diesem Grund werde ich auf diese Kennzeichnung als die richtige Antwort für eine Weile warten.

Verwandte Themen