Domanda

Sto cercando di costruire un self-join a Laravel.Desidero confrontare 2 colonne nello stesso tavolo.

Quando scrivo questo nel mio controller:

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

Lord_id è una colonna, ID è l'altra colonna nella stessa tabella nominata caratteri.Questo non ritorna nulla.Sono sicuro che ho bisogno di fare un sé per essere in grado di ottenere questo.

Modello di personaggio:

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

Non so come usare l'ultima funzione LordCharID().

È stato utile?

Soluzione

has_one è la funzione Laravel 3;Quindi, se stai usando Laravel 4, devi usare hasone

È possibile utilizzare dove per confrontare le colonne:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top