我是 Laravel 的新手,对 ORM 的一些定义有点困惑。我目前正在开发一个简单的故障工单管理系统,这是我的问题:(表:列,列,...)工单:id,描述,设备 ID 设备:id,名称,vendor_id 供应商:id,名称
这是我的表格及其关系的简短简历,遵循 Laravel 的约定。如何构建这些模型?
基本上我需要检索,例如,向某个供应商打开了多少票(我打电话给供应商寻求支持的次数)。
先感谢您
我是 Laravel 的新手,对 ORM 的一些定义有点困惑。我目前正在开发一个简单的故障工单管理系统,这是我的问题:(表:列,列,...)工单:id,描述,设备 ID 设备:id,名称,vendor_id 供应商:id,名称
这是我的表格及其关系的简短简历,遵循 Laravel 的约定。如何构建这些模型?
基本上我需要检索,例如,向某个供应商打开了多少票(我打电话给供应商寻求支持的次数)。
先感谢您
你需要在他们的模型中声明这些关系。例如,您的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);
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/