我是Laravel的新手,对ORM的一些定义有点困惑。 我目前正在制作一个简单的故障单管理系统,这是我的问题: (表:列,列,......) 门票:id,description,equipment_id 设备:id,name,vendor_id vendor:id,name
根据Laravel的惯例,这是我的表及其关系的非常简短的简历。我该如何建立这些模型?
基本上我需要检索,例如,向某个供应商打开了多少票(我打电话给供应商多少次以获得支持)。
提前谢谢
答案 0 :(得分: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);
答案 1 :(得分: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/