Auto-unire a Laravel
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()
.
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