laravel 4 - 理解模型和数据库表关系

时间:2014-10-21 03:33:50

标签: laravel laravel-4

我正在学习laravel,我有以下问题:

  1. 是否需要将数据库表与模型完全匹配?例如:我可以有这样的场景:在DB:table1,table2,table3但在laravel模型中我有groupOfTables.php,其中groupOfTables代表数据库中的所有3个表。

  2. 我数据库中的所有3个表都是相关的。我可以在groupOfTables上使用什么查询来检索所有三个表中的记录?

  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

我不建议让模型与多个表相关联。这是对使用Eloquent ORM的误解。

如果数据库中的表相关,则可以在模型方法中描述关系。以下是使用3个相关模型的示例。汽车,制造商和零件。

<强>表格

  • 汽车
  • 制造商

<强>模型

  • 汽车
  • 制造商
  • 部分

以下是Car模型的示例。一辆汽车只有一个制造商,但有很多零件。我们用这些方法告诉Laravel。

class Car extends Eloquent {

  public function manufacturer() {
    $this->belongsTo('Manufacturer');
  }

  public function parts() {
    $this->hasMany('Part');
  }

}

要查询属于汽车的所有零件,我们可以这样做:

Car::find(1)->parts();

这是找到Car id 1并返回属于它的所有部分。续集查询将执行与此类似的操作:

select * from car where id = 1
select * from parts where user_id = 1

以下是制造商和零件的示例。在下面的逻辑中,我们说'一部分只属于一辆汽车,而制造商有很多汽车'。

class Part extends Eloquent {

  public function car()
  {
    $this->belongsTo('Car');
  }

}

class Manufacturer extends Eloquent {

  public function cars()
  {
    $this->hadMany('Car');
  }

}

我们可以这样使用:

Manufacture::find(1)->cars(); // what cars does a manufacturer with an id of 1 own
Part::find(3)->car(); // what car owns the part with an id of 3

我知道这并没有直接回答你的问题,但希望这能说明如何正确使用模型关系。