0

我是 Laravel 的新手,对 ORM 的一些定义有点困惑。我目前正在开发一个简单的故障工单管理系统,这是我的问题:(表:列,列,...)工单:id,描述,设备 ID 设备:id,名称,vendor_id 供应商:id,名称

这是我的表格及其关系的简短简历,遵循 Laravel 的约定。如何构建这些模型?

基本上我需要检索,例如,向某个供应商打开了多少票(我打电话给供应商寻求支持的次数)。

先感谢您

4

2 回答 2

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 文档的这一部分。

编辑:对于特定的查询,有多少票对某个供应商开放

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

zwacky 所说的完全(编辑:最终可能不完全正确)对于密切关系是正确的,但在您的情况下存在嵌套关系:

Vendor -> Equipment -> Ticket

然后要检索特定供应商的票证,您将在 Vendor 模型上定义关系,如下所示:

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 回答