2016-08-08 6 views
4

私はLaravelと言って質問をしすぎると私を爆破することができますが、2つのデータセットを一緒に連鎖させる最も効率的な方法は何ですか? Laravel内のツール2つのデータセットをlaravelに連結する最も効率的な方法

私は雄弁な関係とクエリビルダーとの結合を使用するかどうかを選択する際に使用する必要がある具体的な考え方はありますか?または、私が検討すべきより小さいまたはより大きなデータセットでクエリビルダを使用する場合の欠点は何ですか?

私は、ユーザーテーブルから1つまたは2つのフィールドだけを必要とするチケットシステムを構築しています。この時点では、関係を使用することを検討するのは非常に上回っているようですが、システムのニーズが高くなると、面倒なコード。これは関係が解決するためのものですか?

覚えておくべき雄弁な関係を使用しているときにカップリングタイプのアクションが起こっていますか?

私が質問をどのようにしているかで本当に明確でない場合は、私はそれを試して言い直します。

答えて

1

私はあなたのEloquentモデルのカップル単純な関係の方法を設定することがEloquentの力(そして容易さとシンプルさ)を解き放つことがわかります。たとえば、カスタム結合コードを記述するか、次のような構造を使用しますか?

foreach($user->tickets as $ticket) { ... etc ... } 

Laravelの新機能のようです。私は、Laravel manualの関係についてのページを読むことを強くお勧めします。多くの素晴らしい例があります。また、関係についてのLaracastビデオチュートリアルhereもあります。私はこのサイトに所属していません。

チケットクラス:

<?php 
class Ticket extends Model { 
    public function user() { 
     return $this->belongsTo('User'); 
    } 
} 

Userクラス:

<?php 
class User extends Model { 
    public function tickets() { 
     return $this->hasMany('Ticket'); 
    } 
} 

限りあなたがそうのようなテーブルを設定しているよう:

tickets (table) 
- id 
- user_id 

users (table) 
- id 

この例では、モデルがしていると仮定しグローバル名前空間。私は完全にあなたのポイントを見て、私はその私は常に推測かなり大きなextent.Iに雄弁とその使用に関する情報を読んでいることを追加するために早める

$ticket->user->first_name 
$ticket->user->last_name 
+0

:次に、あなたはそうのようなチケットからユーザデータをつかむことができます最終的な上昇があることを知っていた。しかし確かにそれにも欠点がありますか?私の場合に使用されている例は、このシステムの必要性が文字通り私のuserテーブルの2つのフィールドであり、チケットの要求ごとに必要であり、それはそれです。私は、それぞれの必要性が分かれるであろうという点を評価しようとしていると思います。これらの関係を使用することに0の欠点がある場合、絶対に私はそれをexsclusively使用します。 –

+0

Laravelに組み込まれた関係を使用することには欠点はありません。彼らはあまりにも多くのトラブルのように見える場合は、私はあなたに慣れていないので、それはあなたに保証します。ユーザーとチケットのこの関係は非常に単純です。 - ユーザーhaveManyチケット - チケットの所属するユーザー –

+0

回答のサンプル実装を追加しました。 –

関連する問題