Laravel 4 模型关系
Laravel 4 Model Relationship
我有 2 个表:
建筑物:
- id
- 名字
- 地址
公寓:
- id
- building_id
- unit_number
- other_data
我还有2款:
建筑模型
class Building extends Eloquent{
protected $table = 'buildings';
public function apartments()
{
return $this->hasMany('Apartment');
}
}
公寓模型
class Apartment extends Eloquent{
protected $table = 'apartments';
public function building()
{
return $this->belongsTo('Building');
}
}
所以现在在我的控制器中,我试图检索所有的公寓,我希望它与建筑模型结合,这样我就可以检索每个建筑的 name公寓在.
Array('0' =>
array('id' => 1,
'building_id' => 1,
'unit_number'=>234,
'other_data'=>'other_stuff',
'name'=>'Building1'),
'1' =>
array('id' => 2,
'building_id' => 2,
'unit_number'=>567,
'other_data'=>'more_stuff',
'name'=>'Building4'))
我相信我可以这样做来独立获得它们,但是如何将它们合并在一起?
$buildings = Building::all();
$apartments= Apartment::all();
这是我在控制器中尝试过的
$building = new Building();
$buildings = $building->all();
$apts = $building->find(1)->apartments();
dd($apts);
我还在控制器中尝试了许多其他变体,但都没有成功。我是否在正确的轨道上以我想要的方式检索数据?
无需单独查询模型,您可以只查询一个模型并预先加载关系,这样它们也都包含该数据:
$apartments = Apartment::with('building')->get();
foreach($apartments as $apartment){
echo 'Building name: '.$apartment->building->name;
}
获取特定建筑的公寓:
$apartments = Building::find(1)->apartments;
(请注意,我不是在调用函数 apartments()
,而是访问 属性 apartments
。Eloquent 将为您获取关系的结果)
我有 2 个表: 建筑物:
- id
- 名字
- 地址
公寓:
- id
- building_id
- unit_number
- other_data
我还有2款:
建筑模型
class Building extends Eloquent{
protected $table = 'buildings';
public function apartments()
{
return $this->hasMany('Apartment');
}
}
公寓模型
class Apartment extends Eloquent{
protected $table = 'apartments';
public function building()
{
return $this->belongsTo('Building');
}
}
所以现在在我的控制器中,我试图检索所有的公寓,我希望它与建筑模型结合,这样我就可以检索每个建筑的 name公寓在.
Array('0' =>
array('id' => 1,
'building_id' => 1,
'unit_number'=>234,
'other_data'=>'other_stuff',
'name'=>'Building1'),
'1' =>
array('id' => 2,
'building_id' => 2,
'unit_number'=>567,
'other_data'=>'more_stuff',
'name'=>'Building4'))
我相信我可以这样做来独立获得它们,但是如何将它们合并在一起?
$buildings = Building::all();
$apartments= Apartment::all();
这是我在控制器中尝试过的
$building = new Building();
$buildings = $building->all();
$apts = $building->find(1)->apartments();
dd($apts);
我还在控制器中尝试了许多其他变体,但都没有成功。我是否在正确的轨道上以我想要的方式检索数据?
无需单独查询模型,您可以只查询一个模型并预先加载关系,这样它们也都包含该数据:
$apartments = Apartment::with('building')->get();
foreach($apartments as $apartment){
echo 'Building name: '.$apartment->building->name;
}
获取特定建筑的公寓:
$apartments = Building::find(1)->apartments;
(请注意,我不是在调用函数 apartments()
,而是访问 属性 apartments
。Eloquent 将为您获取关系的结果)