首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 4模型关系

Laravel 4模型关系
EN

Stack Overflow用户
提问于 2015-01-19 20:26:54
回答 1查看 58关注 0票数 0

我有两张桌子:建筑物:

  • id
  • 名字
  • 地址

公寓:

  • id
  • building_id
  • unit_number
  • other_data

我还有两个模特:

建筑模型

代码语言:javascript
复制
class Building extends Eloquent{


protected $table = 'buildings';


public function apartments()
{
    return $this->hasMany('Apartment');
}
}

公寓模式

代码语言:javascript
复制
class Apartment extends Eloquent{


protected $table = 'apartments';


public function building()
{
    return $this->belongsTo('Building');
}

}

因此,现在在我的控制器中,我试图检索所有的公寓,我希望它加入到建筑物模型中,这样我就可以检索每个公寓所在的建筑的名称

代码语言:javascript
复制
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'))

我相信我可以独立地做到这一点,但我如何将它们合并在一起呢?

代码语言:javascript
复制
$buildings = Building::all();
$apartments= Apartment::all();

这就是我在控制器里尝试过的

代码语言:javascript
复制
$building = new Building();
$buildings = $building->all();
$apts = $building->find(1)->apartments();
dd($apts);

我还在控制器中尝试过许多其他的变体,但都没有成功。我是否走上了正确的轨道,以我想要的方式收回数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 20:38:07

与单独查询模型不同,您只需查询一个模型并急切地加载关系,因此它们都包含这些数据:

代码语言:javascript
复制
$apartments = Apartment::with('building')->get();
foreach($apartments as $apartment){
    echo 'Building name: '.$apartment->building->name;
}

为了获得某一特定建筑物的公寓:

代码语言:javascript
复制
$apartments = Building::find(1)->apartments;

(请注意,我不是调用函数apartments(),而是访问属性apartments。然后雄辩者将为你获取这一关系的结果)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28032956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档