Mysql查询不在laravel中工作

时间:2016-02-27 18:13:50

标签: mysql laravel-5.2

我一直试图从聊天表中检索ser发送的一些消息。我提出了一个在phpmyadmin中工作得很好的查询。

但是当我在laravel中使用相同的查询时,它不起作用。

SELECT user2,message,created_at FROM ( SELECT user2,message,created_at FROM chats WHERE user1 ='Tiffany' UNION SELECT user1,message,created_at FROM chats WHERE user2 ='Tiffany' in ( SELECT DISTINCT user2 FROM chats WHERE user1 ='Tiffany' UNION SELECT distinct user1 FROM chats WHERE user2 ='Tiffany' ) )tb2 WHERE user2 !='Tiffany' GROUP BY user2
我已经尝试了几乎所有东西,但可以找到解决方案。请给我一个小解释为什么上述查询不起作用。我的聊天表的字段是

ID,用户1(VARCHAR),用户2(VARCHAR),消息,created_at(时间戳),的updated_at(时间戳)

我使用的整个代码

    if ($pmessage = \DB::select('select user2,message,created_at
  from (select user2,message,created_at from chats where user1 ='Tiffany'
  union select user1,message,created_at from chats where user2 ='Tiffany'
  in ( select distinct user2 from chats where user1 ='Tiffany'
  union select distinct user1 from chats where user2 ='Tiffany' ))
  where user2 != 'Tiffany'
  group by user2')) {
      return response()->json(['pmessage' => $pmessage, 'status' => 200], 200);
  } else {
      return response()->json(['status' => 505], 505);
  }

2 个答案:

答案 0 :(得分:4)

我认为你需要使用DB :: raw()。类似的东西:

$pmessage = \DB::select(\DB::raw("SELECT ..."))

此外,您需要混合报价。因此,请在查询中使用双引号 ,这样您就可以在查询中使用单引号 。所以你应该使用这样的东西:

$pmessage = \DB::select( \DB::raw("Select user2,message,created_at
from (select user2,message,created_at from chats where user1 ='Tiffany'
union select user1,message,created_at from chats where user2 ='Tiffany'
in ( select distinct user2 from chats where user1 ='Tiffany'
union select distinct user1 from chats where user2 ='Tiffany' ))
where user2 != 'Tiffany'
group by user2')"));

答案 1 :(得分:1)

我的根文件夹你有文件.env用记事本打开后你会发出这样的命令

**



APP_ENV=local
APP_DEBUG=true
APP_KEY=VTRcD5ZoIabuY9QR5Ih1QeCTTgCHQZrR

DB_HOST=localhost
DB_DATABASE=angulara
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null




你也必须在config / database.php

中核心配置数据库