我有以下查询
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行,所以这一定是问题所在。
答案 0 :(得分:0)
您应该使用DB::query
发出与构建器不兼容的复杂任意查询。
您还可以使用DB::connection()->pdo
访问基础PDO对象并尝试使用它。
请参阅:http://laravel.com/docs/database/raw
另外,尝试将标识符放在反引号之间。例如:
select `id` from `users`
这是因为您可能已经点击了某些数据库的保留字。 PhpMyAdmin可能正在为您做这个,这就是为什么你没有在那里得到错误。只是一个理论。