【问题标题】:Mysql query isn't working in laravelMysql查询在laravel中不起作用
【发布时间】:2016-02-27 18:13:49
【问题描述】:

我一直在尝试从聊天表中检索 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,user1(varchar),user2(varchar),message,created_at(timestamp),updated_at(timestamp)

我使用的整个代码

    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);
  }

【问题讨论】:

  • 您使用的是 DB:: 还是 Eloquent?请发布您的代码。
  • @AlexeyMezenin 我正在使用 DB:: 检查编辑后的版本

标签: mysql laravel-5.2


【解决方案1】:

我认为你需要使用 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')"));

【讨论】:

  • 我这样做了,但它仍然无法正常工作,我使用邮递员检查它并给出错误
  • 你能用你当前的代码编辑你的问题吗?也许包括你从邮递员那里得到的错误?
  • 已经编辑过了,邮递员的错误是状态 500 内部服务器错误 500 内部服务器错误
【解决方案2】:

我的根文件夹你有文件 .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 中修正配置数据库

【讨论】:

  • 配置没有问题,我只是输入了一个简单的选择查询,它就可以工作。所以我很确定配置正确完成。
猜你喜欢
  • 2012-04-08
  • 2015-01-13
  • 2013-05-07
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 2019-08-02
相关资源
最近更新 更多