2016-10-12 5 views
0

私はいくつかの映画を含むデータベースを持っているとしましょう。それらは最初に公開された日付と、映画館でそれらを公開する月数別の列でここでは、列の列を結合します。

私がしたいことは、映画を見せているすべての映画館を手に入れることです。私は、単一のクエリでこれを凝縮しようとしている 、この

Cinemas::whereHas('films', function($q){ 
    $q->where('date_created', '>=', \Carbon::now()->subMonths(showing_months))); 
})->get(); 

showing_monthsのようなものは、フィルムが表示されている月の数です。 なぜ私は "アクセス" date_createdと同様の理由でその列にアクセスすることはありますか?

おかげ

答えて

1

私はそれはあなたがそれを行うようにこれまでに数ヶ月を追加することに意味がわからないんですが、2列と渡されたパラメータに基づいて計算は以下のようになります:

Cinemas::whereHas('films', function($q){ 
    $q->whereRaw('date_created >= (? + showing_months)', [Carbon::now()]); 
})->get(); 

編集した質問の解決方法:

Cinemas::whereHas('films', function($q){ 
     $q->whereRaw('date_created >= DATE_SUB(?, INTERVAL showing_months MONTH)', [Carbon::now()]); 
    })->get(); 
関連する問題