13

可能是因为我的 Codeigniter 背景,我发现自己不太喜欢 Laravel 4 的 Eloquent ORM。假设我想编写一个查询,按 id 排序帖子列表,降序,Eloquent 怎么能打败清晰度DB::table('posts')->orderBy('id', 'desc')->get();

是否有充分的理由使用 Eloquent 而不是 Fluent,主要用于连接表?

4

2 回答 2

29

我也来自 codeigniter,这是我的经验:我通常一起使用 Eloquent 和 Fluent。Eloquent 是一个可以让你很好地处理关系、CRUD 操作等的东西。当你需要做一些 SQL 操作时,你可以很容易地添加一些流畅的函数

在您上面提到的示例中,我看到您有帖子表。如果你有一个后期模型,那么使用 Eloquent 编写的相同内容是:

Post::orderBy('id', 'desc')->get();

因此,如果您将 Eloquent 扩展为

Model_name::some_functions

是相同的

DB::table('table_name')->some_functions

当您需要创建或更新模型,或者,例如,获得发表评论时,真正的力量就来了。比它变得容易:

$comments = Post::find($id)->comments;

所以答案是——你必须使用流畅的函数来获取有序列表。您可以将它们与 DB::table('posts')->orderBy 或 Post::orderBy 一起使用

于 2013-07-19T07:16:31.993 回答
3

使用模型和 Eloquent,您还可以在模型类中编写自定义函数来执行常见操作,例如输出几个连接的字段。

例如:

<?php
class User extends Eloquent {
    //Standard Relation Function
    public function posts() {
        return $this->hasMany('Post');
    }
    //Custom function
    public function fullname() {
        return $this->firstName.' '.$this->lastName;
    }
}

//Somewhere else in your code, if you need a users full name...
$user = User::find(3);
$name = $user->fullname();
于 2013-07-19T13:10:40.270 回答