2017-05-31 34 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:不要忘記註冊它,因爲它可以幫助你。 –