2017-03-14 8 views
2

Ich verwende die setTable() Methode für eloquente Anrufe, weil ich Tabellen wie INFO_MATCH_[group_id] verwende, wobei group_id für eine Gruppe von Benutzern spezifisch ist. Gleiches gilt für die Tabelle INFO_[group_id]. Ich kann eine einfache Select-Anweisung wie folgt machen:Laravel & Eloquent: setTable() in Beziehungen

$ad = new InfoMatch(); 
$ad->setTable('INFO_MATCH_'.Auth::user()->group_id); 
$data = $ad->get(); 

Das funktioniert gut. Das InfoMatch Modell hat eine Beziehung definiert wie:

public function infoDetails() { 
    return $this->belongsTo(Info::class, 'info_id', 'id'); 
} 

Wenn ich versuche, einen Anruf wie zu machen:

 $ad = new InfoMatch(); 
     $ad->setTable('INFO_MATCH_'.Auth::user()->group_id); 
     $data = $ad->where('user_id', '=', Auth::user()->id)->with('infoDetails')->get(); 

es endet mit einem Fehler auf. Können Sie angeben, wie der Tabellenname in der Beziehungsfunktion dynamisch festgelegt wird? Vielen Dank.

+0

„Es mit einem Fehler endet“. Wenn Sie uns den Fehler zeigen können, bitte ... – Amarnasan

+0

Es gibt nur NULL auf den 'InfoDetails' zurück, weil die Tabelle INFO leer ist. Ich muss in die INFO_ [group_id] table.ie schauen, wenn die group_id ist T32QXKH45 Ich muss eine Beziehung zwischen der Tabelle INFO_MATCH_ T32QXKH45 und den INFO_T32QXKH45 Tabellen. – DavidN

+0

Und bist du sicher, dass das Problem der Name der Tabelle ist? Was Sie tun, sieht gut aus und sollte keine Fehlerquelle sein. Übrigens ist "NULL" kein Fehler ... – Amarnasan

Antwort

0

was, wenn Sie frisch die Instanz nach bekommen, bevor where

$ad = new InfoMatch(); 
$ad->setTable('INFO_MATCH_'.Auth::user()->group_id); 

$ad->refresh(); 
$data = $ad->where('user_id', '=', Auth::user()->id)->with('infoDetails')->get(); 
Verwandte Themen