2016-09-04 2 views
0

Ich baue ein PM-System, und ich habe ein Problem.Laravel deutliches Ergebnis

Das ist mein PM Tabelle:

id, user_id, to, content 

nun in meinem Posteingang Seite ich alle Benutzer bin holen, die mir eine Nachricht geschickt.

$pms = DB::table('pm')->select('user_id')->distinct()->where('to', Auth::id())->get(); 

Das Problem ist, wenn ich mehr Spalten auf die select-Methode hinzufügen, gewann `t es mehr verschieden sein ..

+1

Was erwartest du? Möchten Sie alle Nachrichten oder nur bestimmte user_id? Wenn Sie nach user_id gruppieren, haben Sie nicht alle Nachrichten – Sylwit

+0

Warum brauchen Sie mehr Spalten? –

+0

Warum verwenden Sie nicht eloquent? –

Antwort

0

Sie können ganz einfach tun, dass Eloquent und seine whereHas mit() Methode.

Zunächst definieren Modelle und die Beziehung im Modell:

class Message extends Model { 
    protected $table = 'pm'; 
} 

class User extends Model { 
    public function sent_messages() { 
    return $this->hasMany(Message::class); 
    } 
} 

Nun holen alle Benutzer, die eine ähnliche Nachricht Modelle haben, wo zu Spalte entspricht Ihrer ID:

$usersThatSentMeMessages = User::whereHas('sent_messages', function($query) { 
    $query->where('to', Auth::id()); 
}); 
Verwandte Themen