2014-10-10 13 views
5

मैं उन सभी उपयोगकर्ताओं को खींचने की कोशिश कर रहा हूं जो उपयोगकर्ता_ग्रुप पिवोट टेबल में किसी निश्चित समूह से मेल खाते हैं। मैं Cartalyst btw से सेंट्री 2 का उपयोग कर रहा हूँ।लैरवेल - क्वेरी और कॉन्सट के साथ क्वेरीबिल्डर

यह सभी उपयोगकर्ताओं को पहले और अंतिम नाम के साथ मिलकर काम करने के लिए काम करता है।

User::select(DB::raw('CONCAT(last_name, ", ", first_name) AS full_name'), 'id') 
     ->where('activated', '=', '1') 
     ->orderBy('last_name') 
     ->lists('full_name', 'id'); 

जब मैं इसे बदलने के लिए उपयोगकर्ताओं को भी एक निश्चित समूह मैं एक सिंटैक्स त्रुटि प्राप्त करने के लिए संबंधित नहीं फिल्टर करने के लिए प्रयास करें।

User::select(DB::raw('SELECT CONCAT(user.last_name, ", ", user.first_name) AS user.full_name'), 'user.id', 'users_groups.group_id', 'users_groups.user_id') 
         ->join('users_groups', 'user.id', '=', 'users_groups.user_id') 
         ->where('user.activated', '=', '1') 
         ->where('users_groups.group_id', '=', $group) 
         ->orderBy('user.last_name') 
         ->lists('user.full_name', 'user.id'); 

सही दिशा में किसी भी झुकाव की सराहना की जाएगी।

संपादित करें: सिंटैक्स त्रुटि

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in 
your SQL syntax; check the manual that corresponds to your MySQL server 
version for the right syntax to use near 'SELECT CONCAT(user.last_name, ", ", 
user.first_name) AS user.full_name, `user`.`' at line 1 (SQL: select SELECT 
CONCAT(user.last_name, ", ", user.first_name) AS user.full_name, `user`.`id`, 
`users_groups`.`group_id`, `users_groups`.`user_id` from `users` inner join 
`users_groups` on `user`.`id` = `users_groups`.`user_id` where 
`users`.`deleted_at` is null and `user`.`activated` = 1 and 
`users_groups`.`group_id` = 9 order by `user`.`last_name` asc) 
+0

आप सिंटेक्स त्रुटि को जोड़ सकते हैं डीबी में चयन करने के लिए :: कच्चे(), उदाहरण देखें की जरूरत नहीं है ? –

+0

ने प्रश्न में त्रुटि को जोड़ा। धन्यवाद – MDS

उत्तर

8

लोगान का जवाब सही दिशा में शुरू हुआ। मुझे सभी 'उपयोगकर्ता' को भी हटाना पड़ा। उपसर्ग क्योंकि यह पहले से ही मुझे लगता है कि उपयोगकर्ता मॉडल को बुला रहा था। यह क्वेरी काम करती है:

User::select(DB::raw('CONCAT(last_name, ", ", first_name) AS full_name'), 'id') 
         ->join('users_groups', 'id', '=', 'users_groups.user_id') 
         ->where('activated', '=', '1') 
         ->where('users_groups.group_id', '=', $group) 
         ->orderBy('last_name') 
         ->lists('full_name', 'id'); 

सभी को धन्यवाद! उम्मीद है कि अगर कोई इस में चलता है तो उन्हें इस प्रश्न के साथ मार्गदर्शन मिलेगा।

+1

आपको पिवट तालिका से कुछ भी चुनने की आवश्यकता नहीं है। –

+0

अच्छी कॉल @JarekTkaczyk। संपादित उत्तर – MDS

1

अपने दूसरे उदाहरण में आप DB::raw('SELECT ...') है। आपको 'चयन' कीवर्ड को हटाने की आवश्यकता है।

0
क्वेरी बिल्डर के साथ

आप कर सकते हैं:

DB::table('users')->join('...')->where('...') ->lists(DB::raw('CONCAT(firstname, " ", lastname)'), 'id')

6

आप

User::select(
      'id', 
      DB::raw('CONCAT(first_name," ",last_name) as full_name') 

     ) 
     ->orderBy('full_name') 
     ->lists('full_name', 'id'); 
संबंधित मुद्दे