我很久以前就创建了一个数据库类,总是在我的项目中使用它。
像这样:
class Database
{
function query($sqlQuery) {
$this->prepare($sqlQuery);
}
function connect($databaseConnectionValues) { }
function read() { }
function prepare() { }
...etc
}
像Laravel这样的框架以一种完全不同的方式做到这一点。它们从不执行SQL。像这样:
$users->find('Demo')->select('email')->get();
我会有两个问题。
问题1:我相信第二个代码被称为"ORM",但什么是"数据库抽象层"?另外,数据库有多少层?(等我知道他们的名字后,我可以做进一步的调查。)
问题2:为什么要使用ORM ?
内容如下:
- 数据库抽象层=获取数据库功能的工具和语法,并重新打包以供编程使用。
- ORM =对象关系映射器,它可能包括一个数据库抽象更进一步,允许您进行管理
这将使此代码片段成为数据库抽象层。
$users->find('Demo')->select('email')->get();
如果它有一些语法,如:
$users->join('Friends')->find('Demo')->select('email')->get();
或者类似的,你手上有一个ORM。
你会发现ORM有用的唯一情况是,如果你必须做连接查询,并希望来自多个表的结果被很好地打包到它们自己的模型中,然后适当地组织。例子:
$u = $user->join('friends')->where('name', 'mike')->get();
echo $u->name; // would be mike;
echo $u->friends[0]->name; // would be the name of another user who's mike's friend
这些当然都是概念性的,与框架无关。在这种情况下,将在模型类中定义一个关系,该关系将与所选用户的所有朋友用户一起加载"friends"属性。
如果你不做表连接,不要担心ORM功能,即使你选择的框架有一个。