0

私は Laravel を初めて使用し、ORM のいくつかの定義について少し混乱しています。私は現在、単純なトラブル チケット管理システムに取り組んでいます。ここに私の質問があります: (テーブル: 列、列、...) チケット: ID、説明、機器 ID 機器: ID、名前、ベンダー ID ベンダー: ID、名前

これは、Laravel の規則に従って、私のテーブルとその関係の非常に短いレジュメです。これらのモデルを構築するにはどうすればよいですか?

基本的に、たとえば、特定のベンダーに対して開かれたチケットの数 (サポートのためにベンダーに電話した回数) を取得する必要があります。

前もって感謝します

4

2 に答える 2

0

zwackyが言ったことは完全に(編集:最終的には完全に正しくないかもしれません)密接な関係に当てはまりますが、あなたの状況ではネストされた関係があります:

Vendor -> Equipment -> Ticket

次に、特定のベンダーのチケットを取得するには、次のようにベンダー モデルでリレーションを定義します。

class Vendor extends Eloquent {
  public function equipment()
  {
    return $this->hasMany('Equipment');
  }
  public function tickets()
  {
    return $this->hasManyThrough('Ticket', 'Equipment');
  }


class Equipment extends Eloquent {
  public function tickets()
  {
    return $this->hasMany('Ticket');
  }
  public function vendor()
  {
    return $this->belongsTo('Vendor');
  } 


class Ticket extends Eloquent {
  public function equipment()
  {
    return $this->belongsTo('Equipment');
  }

ベンダーの合計チケット数を取得するには (現在開いていません):

Vendor::find($id)   // retrieve particular vendor
  ->tickets()->count(); // get count on tickets table

// and this way you retrieve collection of related tickets
Vendor::find($id)   // retrieve particular vendor
  ->tickets; // get Eloquent Collection

また、役に立つかもしれません: http://softonsofa.com/querying-relations-with-eloquent-in-laravel-4/

于 2014-04-04T10:21:28.663 に答える
0

モデル内でこれらの関係を宣言する必要があります。たとえば、Ticket.phpモデルは次のようになります。

class Ticket extends Eloquent {

    public function equipment()
    {
        return $this->hasOne('Equipment');
    }

    public function vendor()
    {
        return $this->hasOne('Vendor');
    }

    ...
}

取得するには、次のようにします。

foreach (Ticket::all() as $ticket) {
    $ticket->vendor()->id;
}

laravel docsのこのセクションを確認してください。

編集: 特定のクエリに対して、特定のベンダーに対してオープンになっているチケットの数:

Ticket::where('open', '=', 1)->vendor()->where('id', '=', 42);
于 2014-04-04T08:28:12.580 に答える