2017-11-01 16 views
0

フィルタスクリプトをやっています。ユーザーはage_toを書いて、最大年齢のユーザーを取得します。問題は、私のユーザーの私のテーブルが生年月日に過ぎないということです。どのようにしてすべてのデータを取得できますか?私はintval関数が良いと思うが、私はどのようにmysqlクエリでそれを使用するか分からない。Laravelの雄弁なクエリのint関数

$user = User::with('user_x')->whereHas('user_x', function($query) use ($request) { 
      $birth_date = Carbon::now()->subYears($request->age_to)->toDateString(); 

      return $query->where('date_of_birth', '<=', $birth_date); 
     })->get(); 

答えて

1

INTVALはおそらく、あなたがやりたいことが、Carbon月はありません。あなたは年齢のために行っているので、その後、カーボンの日付のセッターを使用します。

$birth_date = Carbon::now()->subYears($request->age_from)->toDateString(); // Sets the birth date to today's date minus the requested years 

次に、あなたがあなたのクエリでそれを使用することができます。

$user = User::with('user_x')->whereHas('user_x', function($query) use ($birth_date) { 
      return $query->where('date_of_birth', '<=',$birth_date); 
     })->get(); 
+0

私はないと思います。データベースでは、私は1998年10月10日を持っており、年齢が例えば20の場合はそのユーザーを取得しなければならない。 – Programmer

+0

右。 birth_dateを計算すると、今日の日付が取られ、20年が減算されます。それは '1997-11-01'でしょう。だから、1997年11月1日以前に生まれたデータベースの誰かを探すだろう。 – aynber

+0

私は最初の投稿を編集しました。しかし、今では前もってすべてが得られるよ。 – Programmer