我正在尝试在Laravel中建立一个self join。我想比较同一个表中的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().

有帮助吗?

解决方案

has_one是Laravel3函数;所以如果你使用的是Laravel4,你需要使用 哈松

您可以使用whereRaw比较列:

User::find($user->id)->characters()->whereRaw('lord_id = id')->get();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top