2016-02-27 58 views
0

我一直試圖檢索由聊天表中的ser發送的一些消息。我想出了一個在phpmyadmin中工作得很好的查詢。Mysql查詢在laravel中不起作用

但是當我在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),用戶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); 
    } 
+0

你使用DB ::或Eloquent嗎?請發佈您的代碼。 –

+0

@AlexeyMezenin im使用DB ::檢查編輯版本 – TRomesh

回答

4

我認爲你需要使用DB ::原始()。例如:

$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

我做到了,但它仍然不工作我使用郵遞員來檢查它,並給出了一個錯誤 – TRomesh

+0

你能用你當前的代碼編輯你的問題嗎?也許包括你從郵遞員那裏得到的錯誤? – miln

+1

我的編輯已經編輯,並且郵遞員的錯誤是狀態500內部服務器錯誤 500內部服務器錯誤 – TRomesh

1

我根你有後用記事本打開文件夾.ENV你shold有命令這樣

**

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

還必須corect配置DB中的config/database.php中

+1

配置沒有任何錯誤只是鍵入一個簡單的選擇查詢,它的工作原理。所以我很確定配置是否正確完成。 – TRomesh