मेरे पास यह वाक्य है:

$lastOperationUser = DB::select("SELECT last_operation FROM policies
                        INNER JOIN(users) 
                        ON (policies.user_id=users.id)
                        group by (user_id);");

अगर मैं अपने phpmyadmin में निष्पादित करता हूं तो ठीक काम करता है लेकिन लार्वा में यह त्रुटि फेंक देता है:

SQLSTATE[42000]: Syntax error or access violation: 1055 'test.policies.last_operation' isn't in GROUP BY (SQL: SELECT last_operation FROM policies INNER JOIN(users) ON (policies.user_id=users.id) group by (user_id);)

मेरा मॉडल है:

USERS         POLICIES
id            id
name          last_operation
              user_id      

एक से कई रिश्ते

कृपया कोई मदद?

0
user3892232 11 अप्रैल 2018, 23:24

2 जवाब

सबसे बढ़िया उत्तर

विभिन्न टिप्पणियों से आप जो खोज रहे हैं, उसके विवरण को देखते हुए, निम्नलिखित को आप जो चाहते हैं उसके करीब होना चाहिए:

SELECT user_id, MAX(last_operation) AS last_operation
  FROM policies
  JOIN users
    ON policies.user_id = users.id
  GROUP BY user_id

शुभकामनाएं।

0
Bob Jarvis - Reinstate Monica 12 अप्रैल 2018, 01:48

पहला यह है कि आपको यह सुनिश्चित करना होगा कि आपकी sql क्वेरी आपके डेटाबेस टूल जैसे mysql या sqlite या आदि में कुछ वापस कर सकती है। उसके बाद अपना कोड इस तरह बदलें:

$lastOperationUser = DB::table('policies')->join('users', 'users.id', '=', 'policies.user_id')
                                          ->select('last_operation')
                                          ->groupBy('user_id')
                                          ->get();

मुझे लगता है कि आप डीबी कच्चे का उपयोग किए बिना इस तरह उपयोग कर सकते हैं

यदि त्रुटि होती है, तो config\database.php पर जाएं और 'strict' => false सेट करें

0
Saengdaet 12 अप्रैल 2018, 20:16