在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
还有另一种方法可以让我通过某种急切的加载技巧从Drawing访问链接用户吗?
我有几种不同类型的用户。每种类型的用户都拥有自己的表格,每个表格中的 ID 对应用户表格的* ID **。在我的Users
模型中,我有一个名为''link''的方法,它执行''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');
}
}
答案 0 :(得分:3)
请改为尝试:
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();
同时检查Defining An Accessor。
更新:只需对此方法进行更改(创建accessor
):
public function getUserLinkAttribute()
{
return $this->user->link;
}