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.
„Es mit einem Fehler endet“. Wenn Sie uns den Fehler zeigen können, bitte ... – Amarnasan
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
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