0

最初の選択の結果を使用するネストされた選択を持つクエリがあります。Sequel Pro のクエリ チェッカーを使用してテストしたところ、クエリは完全に機能しています。それは私の望ましい結果を返します。このクエリを Laravel に渡し、単純なechoステートメントを使用してテストを実行すると、 が出力されますNULL

ここに私のPHPコードとクエリがあります:

$crons = DB::select('
    SELECT @quiet_crons:=ROUND(SUM(TIME_TO_SEC(TIMEDIFF(`end_time`, `start_time`))/60/15))
    AS quiet_crons,
    FLOOR(SUM(TIME_TO_SEC(TIMEDIFF(TIME('24:00'), TIME(NOW())))/60/15-@quiet_crons))
    AS remaining_crons
    FROM `quiet_periods`
    WHERE `day` = DAYNAME(NOW())
');

そして、これはコンソールからの出力です:

array(1) {
  [0]=>
  object(stdClass)#689 (2) {
    ["quiet_crons"]=>
    string(2) "24"
    ["remaining_crons"]=>
    NULL
  }
}

結果が になることはremaining_cronsありませんNULL

注意: Laravel でのユーザー定義の MySQL 変数について説明している記事をここで見ましたが、解決策を試しましたが、問題は解決しませんでした。これは私が参照しているリンクです: Laravel 3 のユーザー定義の MySQL 変数?

4

2 に答える 2

2

少し奇妙ですが、SET最初に別のクエリで変数を (初期化) するとすぐに、結果のクエリは Laravel で正常に機能します。

前のコードの上に追加したコードは次のとおりです。

$crons = DB::select(DB::raw('
    SET @quiet_crons = 0;
'));

たぶん、誰かがなぜこれがLaravelのように機能するのかを説明できるかもしれません.

于 2013-07-30T15:48:31.693 に答える