model级别的
用SQL意味着你无法换库,因为SQL也不是通用的。
用join意味着你的项目只能在一个库,join跨库更复杂。
小项目没必要用orm,就如你说的,不差那个时间,改呗。
但大项目就不一样了,要分库、要换库,今天用mysql明天可能就用了hbase还可能混用。
推荐一个短小精悍的ActiveRecord库,lloydzhou/activerecord · GitHub, 可以实现类似Yii的relation的效果。文档地址:http://lloydzhou.github.io/activerecord/
class User extends ActiveRecord{
public $table = 'user';
public $primaryKey = 'id';
public $relations = array(
'contacts' => array(self::HAS_MANY, 'Contact', 'user_id')
);
}
class Contact extends ActiveRecord{
}
$user = new User();
// find one user
var_dump($user->notnull('id')->orderby('id desc')->find());
echo "\nContact of User # {$user->id}\n";
// get contacts by using relation:
// 'contacts' => array(self::HAS_MANY, 'Contact', 'user_id'),
var_dump($user->contacts);
Don't fall in the trap of premature optimalization
找到瓶颈制约。才是关键。不要纠结于某一部分的效率。
ORM性能确实会降低一些,这样就要看怎么取舍了 —— 如果说是要迅速把网站搞起来能用,ORM可能会更快,特别是比如有zii之类的代码生成工具
最近我们也遇到了相同的问题,ORM性能确实比原生sql要低很多,ORM只适合,快速敏捷迭代开发.
如果你有10个甚至5个小伙伴一起写SQL,今天这个人JOIN了3个表明天那个人写了子查询,后天另一个人批量update where条件拼错,然后平均每天都有3次因为字段名字写错导致的bug,你就知道ORM的宝贵了