2013-01-22 4 views
6

Ponownie zapisuję niektóre PHP/MySQL do pracy z Laravel. Jedną z rzeczy, chciałbym zrobić to DB odpytuje bardziej zwięzłe with the Fluent Query Builder ale jestem nieco zagubiony:Wybieraj z wielu tabel za pomocą laravel fluent 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 

Ten pyta forum phpBB i dostaje posty: enter image description here

Jak mogłem re- napisać to, aby skorzystać ze składni Fluent Query Builder?

Odpowiedz

18

nie testowano, ale tutaj jest początek

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

Ach, nie był świadomy mogłeś łańcuch łączy. Przydatne, dzięki. –

+0

Istnieje opcja jak poniżej (przetestowane w 5.3) - -> get (array ('phpbb_topics *', 'username', 'phpbb_posts.post_text' ) – Sadat

2

Rozważyć próbuje ten kod. Powinno to osiągnąć to, czego potrzebujesz.

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

Dla nie mówi po angielsku, to wydawało się, że rozpoznano problem w porządku: 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();