2013-02-27 66 views
0

我有以下查詢查詢不laravel工作,但工作,否則

select stock_data.symbol, open, high, low, close, oi from stock_data 
left join fo_data on fo_data.data_date = stock_data.data_date 
where stock_data.symbol='SYMBOL' 

符號在兩個表的同一列。 stock_data包含大約9列,fo_data包含大約70列。

上面的查詢在phpmyadmin中正常工作,但不是在laravel中,也嘗試了流暢的查詢構建器。

編輯

$results = DB::table('stock_data') 
     ->left_join('fo_data', 'stock_data.data_date', '=', 'fo_data.data_date') 
     ->where('stock_data.symbol', '=', $symbol) 
     ->where('stock_data.data_date', '>=', DB::raw("DATE_SUB('{$data_till}', INTERVAL {$months} MONTH)")) 
     ->order_by('stock_data.data_date', 'asc') 
     ->get(); 

如果我評論此代碼從其他代碼將完全可行,但如果存在此代碼,然後返回的頁面是空白的(不是404)

編輯

我增加了內存限制現在它顯示結果。我的查詢是錯誤的,它返回了超過5000000行,所以這一定是問題。

+1

你是怎麼試的?代碼在哪裏?什麼是錯誤? – itachi 2013-02-27 16:54:45

+0

1.上述兩個查詢不相同。 2.給出整個功能。不只是建造者。 – itachi 2013-02-27 17:31:36

+0

啓用錯誤報告,以便您可以看到錯誤。 – Michelle 2013-02-28 02:43:05

回答

0

您應該使用DB::query來發出與構建器不兼容的複雜任意查詢。

您也可以使用DB::connection()->pdo來訪問底層的PDO對象並從它手動嘗試。

看到這一點:http://laravel.com/docs/database/raw

另外,儘量把反引號之間的標識符。例如:

select `id` from `users` 

這是因爲您可能碰到了某些數據庫的保留字。 PhpMyAdmin可能會爲你做這件事,這就是爲什麼你沒有在那裏得到錯誤。只是一個理論。

+0

我也嘗試了使用DB :: query的sql查詢,但沒有任何返回,它只是不讓任何東西在頁面上呈現。 – user1020363 2013-02-27 17:08:55

+0

打開錯誤,看看出了什麼問題... – 2013-02-27 17:09:36

+0

錯誤報告已在。這是在start.php文件 ini_set('display_errors','1'); error_reporting(E_ALL); – user1020363 2013-02-27 17:15:56