2015-02-09 2 views
0

пожалуйста, скажите мне, как сделать это от соответствующего запросаИспользуя необработанный выражение Laravel 4

select @a:=POW(max(count_votes), 1/10) from users; 

select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc ; 

Пробовал как этот

$rating = DB::statement('select @a:=POW(max(count_votes), 1/10) from users; 

select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc; '); 

return $rating; 

и

$rating = DB::table('users') 
        ->select(DB::raw('*, @a:=POW(max(count_votes), 1/10) ')) 
        ->select(DB::raw('*,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting')) 
        ->orderBy("actual_raiting") 
        ->get(); 

    return $rating; 

, что я делаю не так?

пс:/извините за мой английский

ответ

0

Попробуйте положить все это в одном выберите:

$rating = DB::table('users') 
      ->select(DB::raw('*, raiting, count_votes, ((LOG(POW(max(count_votes), 1/10),count_votes))+raiting)/2 as actual_raiting')) 
      ->orderBy("actual_raiting") 
      ->get(); 
+0

спасибо! это помогло мне – Rai

+0

Добро пожаловать. Если это сработало, пожалуйста [отметьте его как принято] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Если нет, скажите мне, что я должен изменить/отредактировать или добавить свой собственный ответ :) – lukasgeiter

+0

И как мне получить только поле «actual_rating»? Он сказал мне вернуть все данные – Rai

0

Попробуйте это:

$rating1 = DB::select(DB::raw('select @a:=POW(max(count_votes), 1/10) from users')); 

$rating2 = DB::select(DB::raw('select id,name,raiting, count_votes, ((LOG(@a,count_votes))+raiting)/2 as actual_raiting from users order by actual_raiting desc; ')); 

echo "<pre>"; 
print_r($rating1); 
print_r($rating2); 
echo "</pre>"; 
exit; 

Посмотреть, если это помогает.

+0

SQLSTATE [42000]: Ошибка синтаксиса или нарушение прав доступа: 1064 У вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'select id, name, raiting, count_votes, ((LOG (@ a, count_votes)) + рейтинг)/2 как актуальный' в строке 3 (SQL : выберите @a: = POW (max (count_votes), 1/10) от пользователей, выберите id, name, raiting, count_votes, ((LOG (@ a, count_votes)) + рейтинг)/2 как actual_raiting от пользователя actual_raiting desc;) – Rai

+0

Итак, это означает, что ваш SQL-запрос неверен, попробуйте запустить его в phpmyAdmin, исправьте это и повторите попытку. –

+0

http://i58.fastpic.ru/big/2015/0209/4b/8cc0eaf78c05cf52a8f5864ff052a84b.png – Rai