2017-06-25 4 views
0

私はlaravelに新しく、私はlaravel 5.4にmysqlクエリーを書いています。 クエリは次のようである:laravel 5.4でmysqlクエリを書くには?

ノート:列名を避ける..

SELECT * 
FROM (SELECT DISTINCT * 
     FROM messages 
     WHERE (from_id=1 OR to_id=1) 
ORDER BY created DESC) as m 
GROUP BY `from_id` 

私が試みたが、エラーが発生します。

$messages = DB::table('messagetbl') 
       ->select('*') 
       ->Where(function($query) use ($userid){ 
        $query->distinct() 
        ->where('senderid',$userid) 
        ->orWhere('receiverid',$userid) 
        ->orderBy('datetime','desc'); 
       }) 
       ->groupBy('senderid') 
       ->get(); 

エラー:事前に

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db.messagetbl.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select * from messagetbl where (senderid = 8 or receiverid = 8) group by senderid)

感謝。

+0

エラーの完全なスタックトレースを追加し、より明確に問題を説明します。質問を更新するには、[どうすればよい質問をしますか?](http://stackoverflow.com/help/how-to-ask)を参照してください。 –

答えて

0

私はこのようなものと考えている:

DB::table('messages') 
     ->select('*') 
     ->where('form_id', '=', 1) 
     ->orWhere('to_id', '=', 1) 
     ->orderBy('created', 'desc') 
     ->groupBy('form_id') 
     ->distinct() 
     ->get(); 
+0

エラー:構文エラーまたはアクセス違反:1055 SELECTリストの式#1がGROUP BY句になく、GROUP BY句のカラムに機能的に依存しない非集約カラム 'db.messagetbl.id'を含んでいます。これはsql_mode = only_full_group_byと互換性がありません –

+0

config/app.phpでsql_modeをリセ​​ットします: 'Datasources' => [ 'default' => [ 'className' => 'Cake \ Database \ Connection'、 'driver' => 'host' => 'localhost'、 ... 'init' => ["SET sql_mode = ''"]、 ] 'Cake \ Database \ Driver \ Mysql'、 ' 、 –

+0

はどのようなエラーですか?それはいくつかの主要なキーの問題または何かに関連しています。 –

関連する問題