Laravel关系错误试图调用模型中的关系(Laravel Relationship error t

2019-10-20 05:22发布

在Laravel “4.1.x的-dev的”,

我如何可以调用模型中的关系的方法? 从下面的例子

public function userLink() {
  return $this->user->link;
} 

我的功能userLink给我的错误: Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation

也有另一种方式对我来说,从某种预先加载招绘制访问链接的用户?

我有几个不同类型的用户 。 每种类型的用户与对应于* ** ID 用户表的每个表的ID它自己的表。 在我的Users模型我有一个名为“”链接'执行一个'morphTo',并得到了我正确的用户对象的方法。

class Drawing extends Eloquent {
    public function user() {
        return $this->belongsTo('User', 'user_id');
    }

    // this throws the relation error above, also I beleive this does two queries, anyway to improve this?
    public function userLink() {
        return $this->user->link;
    }
}

class User extends Eloquent {
    public function link() {
        return $this->morphTo('User', 'type', 'id');
    }
}

class Retailer extends Eloquent {
    public function user() {
        return $this->belongsTo('User', 'id');
    }
}

class Manufacturer extends Eloquent {
    public function user() {
        return $this->belongsTo('User', 'id');
    }
}

Answer 1:

试试这个:

Drawing::first()->user->link;

或这个:

// Drawing model
public function user()
{
    return $this->belongsTo('User', 'user_id');
}

// Drawing model
// Requires above relation
public function userLink()
{
    return $this->user->link;
}

然后:

$ulink = Drawing::first()->userLink();

同时检查定义的存取 。

更新:只是要(创建一个改变你的方法,这样的accessor ):

public function getUserLinkAttribute()
{
    return $this->user->link;
}


文章来源: Laravel Relationship error trying to call a relationship within the model