我正在学习laravel,我有以下问题:
是否需要将数据库表与模型完全匹配?例如:我可以有这样的场景:在DB:table1,table2,table3但在laravel模型中我有groupOfTables.php,其中groupOfTables代表数据库中的所有3个表。
我数据库中的所有3个表都是相关的。我可以在groupOfTables上使用什么查询来检索所有三个表中的记录?
谢谢!
答案 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
我知道这并没有直接回答你的问题,但希望这能说明如何正确使用模型关系。