RedBeanPHP 使用类命名约定将模型绑定到表。我不能遵守该命名约定,因为我有一个表名不是一成不变的项目。我需要一种在RedBean_SimpleModel
没有命名约定的情况下将 a 连接到表名的方法 -我该怎么做?
问问题
981 次
1 回答
6
好的,我在浏览API 文档时找到了一种解决方案。我可以设置自己的“模型格式化程序”,这只是意味着我可以创建一个类,该类负责将表名与类名连接起来。我的 RedBean 设置代码现在如下所示:
# 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);
这是一个丑陋的解决方案。我宁愿能够做这样的事情:
RedBean_ModelHelper::setModelForTable($modelName, $tableName);
出于这个原因,我将暂时将其标记为正确答案。
于 2012-04-13T14:28:07.180 回答