首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询关系

查询关系
EN

Stack Overflow用户
提问于 2014-10-07 16:47:23
回答 1查看 26关注 0票数 0

我有这些桌子:

代码语言:javascript
复制
table: investigation
id
name
start_city
end_city

table: city
id
name

start_cityend_city指的是city.id

这是我的Investigation模型:

代码语言:javascript
复制
public function start_city(){
    return $this->hasOne('City', 'id', 'start_city');
}

public function end_city(){
    return $this->hasOne('City', 'id', 'end_city');
}

City模型:

代码语言:javascript
复制
public function start_city(){
    return $this->belongsTo('Investigation', 'id', 'start_city');
}

public function end_city(){
    return $this->belongsTo('Investigation', 'id', 'end_city');
}

Investigation控制器:

代码语言:javascript
复制
public function show($id){
    echo '<pre>';
    var_dump(Investigation::find($id)->start_city->name);
}

我总是得到Trying to get property of non-object。我怀疑这段关系在某种程度上已经“破裂”了。我该怎么解决这个问题?我试着切换hasOnebelongsTo,但这并没有改变任何事情。

PS:请不要评论代码惯例,因为我把这段代码从没有复数形式的其他语言中“翻译”出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 16:59:44

把你所有的关系重新命名为camelCase

代码语言:javascript
复制
public function startCity(){
    return $this->hasOne('City', 'id', 'start_city');
}

public function endCity(){
    return $this->hasOne('City', 'id', 'end_city');
}

其他车型也是如此。

然后您可以使用dynamic properties,如下所示:

代码语言:javascript
复制
$investigation->startCity;

否则,您就不能使用动态属性,您需要这样做:

代码语言:javascript
复制
$investigation->start_city()->getResults()->name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26241107

复制
相关文章

相似问题

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