Codeigniterの経歴のせいか、Laravel 4's Eloquent ORMをあまり楽しんでいません。投稿のリストをID、降順、降順で並べ替えるクエリを作成したいとします。 EloquentはどのようにしてDB::table('posts')->orderBy('id', 'desc')->get();
の明快さを打ち負かすことができますか?
Eloquent over Fluentを使用する正当な理由はありますか?それは主にテーブルを結合するためでしたか?
私も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で両方を使用できます
モデルと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();