我正在尝试在Laravel中建立一个自我加入。我希望比较同一个表中的2列。
当我在控制器中写这个时:
$char_name_obj = User::find($user->id)->characters()->where('lord_id', '=', 'id')->get();
lord_id是一列,id是同一个表中名为characters的另一列。这什么都不返回。我确信我需要自我加入才能实现这一目标。
角色模型:
class Character extends Eloquent {
protected $table = 'characters';
protected $fillable = array('lord_id','char_name', 'char_dynasty', 'picture');
public function user()
{
return $this->belongsTo('User');
}
public function Titles()
{
return $this->hasMany('Title');
}
public function LordCharID()
{
return $this->has_one('Character');
}
}
我不知道如何使用最后一个函数LordCharID()
。
答案 0 :(得分:1)
has_one是Laravel 3的功能;因此,如果您使用的是Laravel 4,则需要使用hasOne
您可以使用whereRaw来比较列:
User::find($user->id)->characters()->whereRaw('lord_id = id')->get();