首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 5急装无法工作

Laravel 5急装无法工作
EN

Stack Overflow用户
提问于 2015-03-13 15:39:54
回答 1查看 615关注 0票数 0

我用这种麻烦看了很多搜索结果,但我无法让它起作用。

用户模型

代码语言:javascript
运行
复制
<?php namespace Module\Core\Models;

class User extends Model {

(...)

protected function Person() {
    return $this->belongsTo( 'Module\Core\Models\Person', 'person_id' );
}

(...)

人模型

代码语言:javascript
运行
复制
<?php namespace Module\Core\Models;

class Person extends Model {

(...)

protected function User(){
    return $this->hasOne('Module\Core\Models\User', 'person_id');
}

(...)

现在,如果我使用User::find(1)->Person->first_name它的工作。我可以从用户模型中获得人员关系。

但是..。User::with('Person')->get()对未定义方法Illuminate\Database\Query\Builder::Person()的调用失败

我做错什么了?我需要一个收集所有的用户与他们的个人信息。

EN

Stack Overflow用户

回答已采纳

发布于 2015-03-13 17:10:39

您必须将关系方法声明为public

为什么会这样呢?让我们看一看with()方法:

代码语言:javascript
运行
复制
public static function with($relations)
{
    if (is_string($relations)) $relations = func_get_args();

    $instance = new static;

    return $instance->newQuery()->with($relations);
}

由于方法是从静态上下文中调用的,所以不能只调用$this->Person()。相反,它会创建模型的一个新实例,并创建一个查询生成器实例,并对此调用with等等。最后,必须从模型外部访问关系方法。这就是为什么可见性必须是public

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29036397

复制
相关文章

相似问题

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