2013-01-22 21 views
6

Ich schreibe etwas PHP/MySQL um mit Laravel zu arbeiten. Eine Sache, Ich mag würde zu tun ist, machen den DB-Abfragen prägnanter with the Fluent Query Builder aber ich bin ein wenig verloren:Wählen Sie aus mehreren Tabellen mit Laravel fließenden Query Builder

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 

Dieser fragt einen Ein Forum und erhält Beiträge: enter image description here

Wie konnte ich re- Schreiben Sie dies, um die Syntax des Fluent Query Builders zu verwenden?

Antwort

18

getestet Nicht aber hier ist ein Anfang

return DB::table('phpbb_topics') 
         ->join('phpbb_posts', 'phpbb_topics.topic_first_post_id', '=', 'phpbb_posts.post_id') 
         ->join('phpbb_users', 'phpbb_topics.topic_poster', '=', 'phpbb_users.user_id') 
         ->order_by('topic_time', 'desc') 
         ->take(10) 
         ->get(array(

            'post_text', 
            'bbcode_uid', 
            'username', 
            'forum_id', 
            'topic_title', 
            'topic_time', 
            'topic_id', 
            'topic_poster' 


         )); 
+0

Ah war, konnte man sich nicht bewusst Kette verbindet. Nützlich, danke. –

+0

eine Option wie unten Es gibt (getestet in 5.3) - -> get (array ('phpbb_topics *', 'username', 'phpbb_posts.post_text' ) – Sadat

2

diesen Code prüfen, versuchen. Es sollte erreichen, was Sie benötigen, abgeschlossen.

DB::select(DB::raw("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")); 
+1

Für nicht Englisch gesprochen, schien ihr diagnostiziert zu haben das problem gut: P – rayryeng

1
return DB::table(DB::raw('phpbb_topics t, phpbb_posts p, phpbb_users u')) -> select(DB::raw('p.post_text, p.bbcode_uid, u.username, t.forum_id, t.topic_title, t.topic_time, t.topic_id, t.topic_poster'))->where('phpbb_topics.topic_first_post_id', '=', 'phpbb_posts.post_id')->where('phpbb_users', 'phpbb_topics.topic_poster', '=', 'phpbb_users.user_id')->order_by('topic_time', 'desc')->take(10)->get(); 
Verwandte Themen