1

モデルで Fluent Query Builder を使用する方法を知りたいですか? 適切に行う方法の例が見つかりません。すべての例は Eloquent ORM を使用しています。laravel のドキュメントから、Eloquent モデルを作成するには、Eloquent クラスを拡張します。

class User extends Eloquent {}

Eloquent が優れていることは理解していますが、私は今 laravel を初めて使用し、Eloquent が行っていることはすべて私を混乱させることだけです。モデルはどのように記述すればよいでしょうか。コントローラーで使用できるようにするには?

私は私が書くだろうコードイグナイターから来ました

class some_model extends CI_Model {}

そして、このモデルを自分のコントロールに簡単にオートロードして利用することができました。流暢でそれはどのように行われますか?

4

2 に答える 2

1

Eloquent ORM は 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 モデルから直接得られるメソッドを利用できます。ここにも大きな利点が 1 つあります。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これは静的メソッドであるため、使用しています。(なんてこった、シャーロック (-: )

モデルが初期化されている場合は、$this->where()または他の方法を使用することもできます。クエリ ビルダー ドキュメントへのリンクwhere()

于 2013-11-13T08:07:34.420 に答える