2017-05-31 36 views
3

我有这个SQL的问题。如何将SQL与CAST函数转换为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

假设您已经设置wp_postswp_postmeta模态,如this tutorial所述,那么下面的查询将为您做这件事。

$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:不要忘记注册它,因为它可以帮助你。 –