2016-10-21 2 views
0

Ich möchte Abfrage wie folgt in Laravel 5,3Wie kann man Daten aus mehreren Tabellen mit eloquent in Laravel 5.3 abrufen?

SELECT p.post_text, p.bbcode_uid, u.username, t.forum_id, t.topic_title, t.topic_time, t.topic_id, t.topic_poster 
FROM phpbb_topics t, phpbb_posts p, phpbb_users u 
WHERE t.forum_id = 9 
AND p.post_id = t.topic_first_post_id 
AND u.user_id = t.topic_poster 
ORDER BY t.topic_time 
DESC LIMIT 10 

Antwort

2

Betrachten wir zum Beispiel den Bau gibt es zwei Tabellen ist Benutzer und der andere ist Beiträge

beim Erstellen Migration hinzufügen User_id Fremdschlüssel Ihre Beiträge Tabelle als

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 

Benutzer erstellen und Beitrag Modell und in Ihrem Benutzer Modell definiert Beziehung zu Beitrag als

public function post(){ 
    return $this->hasMany(Post::class); 
} 

und in Ihrem Beitrag Modell eine Beziehung zu Benutzern definieren Modell als

public function user(){ 
    return $this->belongsTo(User::class); 
} 

jetzt Sie können den Benutzer von Post-Modell

erhalten
+0

Ich möchte keinen Fremdschlüssel verwenden. ohne wie kann ich das umsetzen? – sam

+0

Wenn Sie keinen Fremdschlüssel verwenden möchten, ist es nicht möglich, entweder die unbearbeitete Abfrage auszuführen oder beredte Join-Methoden zu verwenden. Die Verwendung eines Fremdschlüssels hat jedoch viele Vorteile. –

Verwandte Themen