1

我想知道如何在模型中使用 Fluent Query Builder?我找不到任何有关如何正确执行此操作的示例。所有示例都使用 Eloquent ORM。从 laravel 的文档中,创建 Eloquent 模型是通过扩展 Eloquent 类:

class User extends Eloquent {}

我知道 Eloquent 可以很棒,但我现在是 laravel 的新手,而 Eloquent 所做的只是让我感到困惑。我将如何编写模型?这样我就可以在我的控制器中使用它了吗?

我来自我会写的codeigniter

class some_model extends CI_Model {}

我能够轻松地将这个模型自动加载到我的控件中并利用它。流利的怎么做?

4

2 回答 2

1

Eloquent ORM 扩展了 Fluent,因此所有 fluent 方法都可用。Eloquent 就像一些语法糖。我建议你习惯它,它会让你的代码更干净。

这是一个例子:

// Fluent query builder
DB::table('users')->where('id', '=', 1)->first();

// Eloquent
User::find(1);

// Generated SQL
select * from users where id = 1 limit 1;

两者都生成相同的 SQL,并且 Eloquent 在幕后使用的是 Fluent。主要区别在于使用 Eloquent 需要您拥有扩展 Eloquent 模型的模型。

需要理解的重要一点是,只有在扩展 Eloquent 类时,才能使用 Eloquent 方法。只要您为应用程序指定了正确的数据库,便始终可以使用流畅的查询构建器方法。

那么为什么要使用 Eloquent 呢?

如上例 Eloquent 和 Fluent 生成相同的 SQL,但在响应更复杂时,返回的结果仍然存在较大差异。

Fluent 查询构建器将返回一个“简单”的响应,其中只有值,没有可用的方法。这取决于您的 PDO 设置。

Eloquent 将为您做更多的事情。您可以获得直接来自 Eloquent 模型的可用方法。这里还有一个很大的好处,Eloquent 将返回一个实现了许多有用接口的集合。这意味着您可以对返回的数据做很多事情。

这里有一些不错的读物:

什么是雄辩和流利的?

雄辩的收藏

于 2013-11-13T09:09:11.457 回答
0

好吧,您可以像文档显示的那样使用它。例子:

<?php
class Foobar extends Eloquent
{
    public static function retrieve($code, $language)
    {
        return static::where('code', $code)->where('language', $language)->first();
    }
}

$foobar = Foobar::retrieve('code', 'EN');

我正在使用static::where,因为这是一种静态方法。(不废话,Sherlock (-: )

如果模型已初始化,您也可以只使用$this->where()或任何其他方法。链接到查询构建器文档where()

于 2013-11-13T08:07:34.420 回答