您好,欢迎访问一九零五行业门户网

Laravel的Eloquent有什么特点

看了官方文档,感觉eloquent这种orm基本上所有框架都有做啊,链式调用什么的根本就不是特点啊,其它框架都封装了各种数据库操作。为什么说eloquent是laravel非常强大的地方,它有什么特点吗
回复内容: 看了官方文档,感觉eloquent这种orm基本上所有框架都有做啊,链式调用什么的根本就不是特点啊,其它框架都封装了各种数据库操作。为什么说eloquent是laravel非常强大的地方,它有什么特点吗
简单,高效,优雅
基本特性phpuser::first(); // 得到第一个 user 对象user::find(10); // 得到 id = 10 的 user 对象user::where('name', 'john')->first(); // 得到第一个 name = john 的 user 对象user::where('name', 'john')->get(); // 得到 name = john 的 user 对象组user::where('name', 'john')->get()->toarray(); // 得到 name = john 的 user 对象数组article::where('id', '>=', 10)->where('id', 'orderby('updated_at', 'desc')->get(); // 得到 article id 在 10~20 的对象组
高级特性分页后端代码:
phpreturn view::make('users')->withusers(user::paginate(20));
前端代码 users.blade.php:
php
@foreach ($users as $user)id:{{ $user->id }}name:{{ $user->name }}@endforeach{{ $users->links() }}
laravel 会自动生成分页指示器及链接,自动维护。分页功能已经彻底完成。
模型间关系以一对多关系举例,获得 id = 10 的用户写过的所有文章:
phpclass user extends eloquent { protected $table = 'users'; public function hasmanyarticles() { return $this->hasmany('article', 'user_id', 'id'); }}
取得:
php$userwitharticles = user::find(10)->hasmanyarticles()->get();
结果:$userwitharticles 是一个标准的 user 对象,外加 $userwitharticles->hasmanyarticles 的值为该用户写的所有文章的对象组。
关于更多模型间关系可以参考:深入理解 laravel eloquent(三)——模型间关系(关联)
比较“现代化”的这些php框架,文案都是针对原来不用框架/不用orm的程序员写的,相对于直接拼sql,eloquent当然在功能上很强大,但相对与同属activerecord的propel和mapper/proxy模式的doctrine,没有质的差别。
增删改查就不说了,说几个其他框架可能没有的
1.relation时的预载入
用来减少了orm的n + 1 查询问题
2.缓存
反复执行user::find(1),sql执行一次。
3.模型观察者
使用了观察者模式,监听模型的操作。
其它类似信息

推荐信息