2016-10-18 4 views
0

Laravel 5.3에 DB::raw() 쿼리가 있습니다.DB :: raw() 쿼리를 간단한 DB :: table()에 다시 작성하십시오.

WHERE 중 하나는 AND TIMESTAMPDIFF(YEAR, profiles.dob, CURDATE()) >= '$min_age'입니다. 여기에서는 사용자의 생년월일이 특정 숫자 (사용자 연령)보다 크거나 같은지 확인하고 있습니다.

가능한 경우 없이 DB::table()을 사용하여이 절을 다시 쓸 수 있습니까?

DB::table('profiles') 
->select('profiles.dob', 'profiles.city', 'profiles.id', 'users.username', 'photos.photo') 
->join('users','profiles.id','=','users.id') 
->leftJoin('photos'.'profiles.id','=','photos.profile_id') 
->where('users.active',1) 
->where('profiles.income','>=',$seekingIncome) 
->whereIn('profiles.religion', $seekingReligion) 
->whereRaw('TIMESTAMPDIFF(YEAR, profiles.dob, CURDATE()) >= "?"',[$min_age]) 
->whereRaw('TIMESTAMPDIFF(YEAR, profiles.dob, CURDATE()) <= "?"',[$max_age]) 
->groupBy('profiles.id') 
->get(); 
+0

당신이'로 변환 할 전체 쿼리를 추가 질문을 업데이트 할 수 있습니다

이이 버전의 단순화
DB::select( DB::raw( "SELECT profiles.dob, profiles.city, profiles.id, users.username, photos.photo " . "FROM profiles INNER JOIN users ON profiles.id = users.id " . "LEFT JOIN photos ON profiles.id = photos.profile_id " . "WHERE users.active = 1 " . "AND profiles.income >= '$seekingIncome' " . "AND profiles.religion IN ('$seekingReligion') " . "AND TIMESTAMPDIFF(YEAR, profiles.dob, CURDATE()) >= '$min_age' " . "AND TIMESTAMPDIFF(YEAR, profiles.dob, CURDATE()) <= '$max_age' " . "GROUP BY profiles.id" )); 

... – Qazi

답변

0

가 쿼리를 보면,이 작업을해야한다 DB :: table` standards
+0

고마워요. 그게 내가 필요한거야. – Vezlius