自我加入Laravel

时间:2014-02-24 22:15:11

标签: laravel eloquent self-join

我正在尝试在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()

1 个答案:

答案 0 :(得分:1)

has_one是Laravel 3的功能;因此,如果您使用的是Laravel 4,则需要使用hasOne

您可以使用whereRaw来比较列:

User::find($user->id)->characters()->whereRaw('lord_id = id')->get();