2017-05-31 2 views
3

このSQLに問題があります。CAST関数を使用してSQLをEloquentに変換する方法

SELECT wp_posts.* 
FROM wp_posts 
JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
WHERE wp_posts.post_date > '2017-04-20 23:59:59' 
    AND wp_postmeta.meta_key = 'views' 
ORDER BY wp_postmeta.meta_value+0 DESC 
LIMIT 0, 10 

このクエリは、最も多く閲覧された投稿を返します。私はEloquentに変換したい。

答えて

1

this tutorialのように、wp_postswp_postmetaのモーダルを設定すると仮定すると、以下のクエリで問題が解決します。

$dp = DB::getTablePrefix(); 
$order_by = "CAST(" . $dp . "postmeta.meta_value AS unsigned) DESC"; 
BlogPost::with('postmetas') 
    ->where('posts.post_date', '>', '2017-04-20 23:59:59') 
    ->where('postmeta.meta_key', 'views') 
    ->orderByRaw($order_by) 
    ->limit(10) 
    ->get(); 

希望します。

+0

@ user2706443:あなたを助けるので、upvoteを忘れないでください。 –

関連する問題