Pergunta

Eu estou tentando construir uma auto-associação, no Laravel.Eu gostaria de comparar com 2 colunas da mesma tabela.

Quando eu escrever isso no meu controlador:

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

lord_id é uma coluna id é a outra coluna da mesma tabela chamada caracteres.Este não retorna nada.Tenho certeza de que eu preciso para fazer uma auto-associação para ser capaz de conseguir isso.

Modelo do personagem:

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');
    }
}

Eu não sei como utilizar a função LordCharID().

Foi útil?

Solução

has_one é o Laravel 3 função;então, se você estiver usando o Laravel 4, você precisa usar hasOne

Você pode usar whereRaw para comparar as colunas:

User::find($user->id)->characters()->whereRaw('lord_id = id')->get();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top