Php Laravel 4模型关系

Php Laravel 4模型关系,php,laravel-4,Php,Laravel 4,我有两张桌子: 建筑物: 身份证 名字 地址 公寓: 身份证 建筑物识别号 单元号 其他数据 我还有两种型号: 建筑模型 class Building extends Eloquent{ protected $table = 'buildings'; public function apartments() { return $this->hasMany('Apartment'); } } 公寓模型 class Apartment extends Eloquent

我有两张桌子: 建筑物:

  • 身份证
  • 名字
  • 地址
公寓:

  • 身份证
  • 建筑物识别号
  • 单元号
  • 其他数据
我还有两种型号:

建筑模型

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');
}

}
现在,在我的控制器中,我试图检索所有的公寓,我希望它与建筑模型结合起来,这样我就可以检索每个公寓所在的建筑的名称

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;

(请注意,我不是在调用函数
partments()
,而是在访问属性
partments
。然后,Eloquent将为您获取关系的结果)

您能解释一下“将它们合并在一起”是什么意思吗?我想我更习惯于检索数据,并以简单数组返回数据。我希望建筑物的名称就在公寓数据的数组中。但我看到结果作为一个对象回来了。所以,只要我可以访问它们,我可以用卢卡斯盖特的答案访问它们,那么我就准备好了。太好了。那很好用。现在我可以阅读更多关于渴望加载到的内容。谢谢