Pregunta

Estoy intentando crear una unión automática en Laravel.Deseo comparar 2 columnas en la misma tabla.

Cuando escribo esto en mi controlador:

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

Lord_id es una columna, id es la otra columna en la misma tabla llamada caracteres.Esto no devuelve nada.Estoy seguro de que necesito unirme yo mismo para poder lograrlo.

Modelo de personaje:

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

No sé cómo usar la última función. LordCharID().

¿Fue útil?

Solución

has_one es la función de Laravel 3;entonces, si estás usando Laravel 4, necesitas usar Tiene uno

Puedes usar WhereRaw para comparar columnas:

User::find($user->id)->characters()->whereRaw('lord_id = id')->get();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top