0

次のクエリがあります

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'

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 行を超えていたので、それが問題であるに違いありません。

4

1 に答える 1

0

DB::queryビルダーではうまくいかない複雑な任意のクエリを発行するために使用する必要があります。

を使用DB::connection()->pdoして、基になる PDO オブジェクトにアクセスし、そこから手動で試すこともできます。

これを参照してください:http://laravel.com/docs/database/raw

また、識別子をバッククォートの間に入れるようにしてください。元:

select `id` from `users`

これは、データベースの予約語にヒットした可能性があるためです。PhpMyAdmin がこれを行っている可能性があるため、エラーが発生していません。ただの理論です。

于 2013-02-27T17:04:41.733 に答える