你对学说的体验是什么?我从来都不是一个ORM类型的人,我主要管理像adodb这样的基本数据库抽象层.
但我理解了它的所有概念和好处.所以当一个需要ORM的项目出现时,我认为我会尝试一个ORM框架.
我要在学说和推进之间做出决定,所以我选择了学说,因为我不想处理这个要求.
我不知道我做错了什么.我带着正确的心态进来了.我绝不是一个'初级'php小子.但是我每一步都在与系统作斗争.有很多文档,但都觉得有点混乱.而简单的东西,如YAML到数据库表创建只是不工作,只是没有错误或任何东西bork out.很多其他的东西工作有点时髦需要在工作之前进行额外的调整.
也许我在这里做了一些愚蠢的新手假设,一旦我发现它是什么我会有一个啊哈的时刻.但现在我完全讨厌这个系统.
是否有人可以给出一些提示或者可能指向我关于这个主题或某个权威网站/人的关于此的良好资源?或者只是推荐另一个"正常工作"的ORM框架?
我的感情很复杂.我只是SQL的高手,因为它很容易验证.您可以快速测试SELECT语句,直到获得正确的结果.并且重构是一件轻而易举的事.
在Doctorine或任何ORM中,有如此多的抽象层,它几乎就像强迫症(强迫症/强迫症).在我最近的项目中,我尝试了Doctrine,我打了几个墙.我花了几天时间才找到一个解决方案,我知道我可以在几分钟内用SQL编写.那太令人沮丧了.
我脾气暴躁.SQL的社区是巨大的.社区/对学说的支持是微不足道的.当然你可以查看源代码并尝试弄明白......这些问题需要花费数天的时间才能弄明白.
一句话:不要尝试使用Doctrine或任何ORM,而不需要花很多时间自己进行grokking.
我认为mtbikemike完美地总结道:"我花了几天的时间才找到一个解决方案,我知道我可以在几分钟内用SQL编写." 那也是我的经历.SAD(慢速应用程序开发)得到保证.更不用说每个角落都有丑陋的代码和限制.需要几分钟的事情需要几天时间,通常情况会更复杂,花费数小时或数天的事情是不可行的(或者不值得花时间).由此产生的代码更加冗长和含糊不清(因为我们确实需要另一种查询语言DQL,以使事情更具可读性).奇怪的虫子四处都是,大部分时间都花在追捕它们并遇到限制和问题.学说(我只使用v2.x)类似于徒劳无功,完全没有任何好处.它是我目前系统中最讨厌的组件,也是唯一一个存在巨大问题的组件.进入一个新的系统,我总是来自db到实体类,试图找出代码中不同位置的哪个名称是正确的.一场噩梦.
我没有看到一个专业的学说,只有缺点.我不知道为什么它存在,我希望它每天都没有(至少在我的项目中).
我们已经使用Propel和Symfony一起使用了2年,并且使用Symfony的Doctrine超过1年.我可以说,使用MVC框架迁移到ORM是我们所做的最好的一步.我建议坚持使用Doctrine,尽管学习如何使用它需要一些时间.最后,您会发现您的代码更具可读性和灵活性.
如果你正在寻找一个从哪里开始,我会推荐Symfony Jobeet教程http://www.symfony-project.org/jobeet/1_4/Doctrine/en/(第3章,第6章涵盖基础知识),当然学说文档.
正如我上面所写,我们已经使用Doctrine一段时间了.为了使我们的工作更加舒适,我们开发了一个名为ORM Designer(www.orm-designer.com)的工具,您可以在图形用户界面中定义数据库模型(不再有YAML文件:-),这些文件根本不是很糟糕).你也可以找到一些有用的教程.
我的经历听起来与你的相似.我刚开始使用学说,从未使用过Propel.但是我对学说非常失望.它的文档很糟糕.组织不良,而且相当不完整.
Propel和Doctrine使用PDO.PDO在Oracle数据库中存在许多漏洞.所有这些都与CLOB字段有关.如果您正在使用Oracle,请在开始新项目之前牢记这一点.这些漏洞几年前就开放了.Doctrine和PDO将与Oracle和CLOB一起崩溃