有一个PHP类镜像SQL表的好方法是什么?

时间:2015-01-03 11:22:21

标签: php mysql

我想学习PHP,并选择将一个简单的项目跟踪器作为练习。

我找不到一种很好的(DRY)方法来将我的模型类映射到sql行。 现在我有一个全局$ TasksColumns并始终检查索引是否存在:

$TasksColumnId = "Id";
$TasksColumnState = "State";
$TasksColumns = [ 
        $TasksColumnId,
        "Summary",
        "Description",
        $TasksColumnState,
        "Estimation",//EstimateDuration
        "Actual",//Duration
        "FixVersion" 
        // Add Rank
        // Add Priority
];

然后手动签入代码:

$task -> Id = $task -> valueIfExistsKeyInArray("Id", $IdSummaryDescriptionStateEstimationActualFixVer);
        $task -> Summary = $task -> valueIfExistsKeyInArray("Summary", $IdSummaryDescriptionStateEstimationActualFixVer);

有什么更好的方法来实现这一目标? (所以我不必在添加新的SQL列时触及所有代码)

由于

1 个答案:

答案 0 :(得分:1)

您可以使用Doctrine。 它是将数据库行映射到php类的框架。

Here on wikipedia就是一些例子。此示例从维基百科中复制:

$user = new User();
$user->name = "john1";
$user->password = "doe";
$entityManager->persist($user);
$entityManager->flush();
echo "The user with id $user->id has been saved.";

这是Doctrine tutorial。检索对象也很容易(例如教程中的例子):

$reporter = $entityManager->find("User", $theReporterId);

但您也可以执行更复杂的查询来检索对象。