Laravel 5.2 Eloquent ORM save()不起作用

I have a column called hotness on the posts table, and I am trying to update it using the elequent orm save() method

This is my code:

$rank = new Ranking;
$post = Post::where('id', $post_id)
    ->select(DB::raw("(select count(*) from votes where votes.vote = '1' and votes.post_id = posts.id) as upvotes, (select count(*) from votes where votes.vote = '0' and votes.post_id = posts.id) as downvotes, posts.created_at, posts.hotness"))
    ->first();

echo "Starting HOTNESS: " . $post->hotness; //CORRECT VALUE

$post->hotness = $rank->hotness($post->upvotes, $post->downvotes, strtotime($post->created_at));

echo "Updated HOTNESS: " . $post->hotness; //CORRECT VALUE

$post->save();

After I run this command and check my database, the post hotness is still at the starting value. Both of the echo's are printing out printing out the correct value, and no errors are being thrown. Any idea why it's not updating?

I figured it out. It turns out you cant use a 'select' on the the model you are updating so I changed my code to this and it worked.

$rank = new Ranking;
$postVotes = Post::where('id', $post_id)
    ->select(DB::raw("(select count(*) from votes where votes.vote = '1' and votes.post_id = posts.id) as upvotes, (select count(*) from votes where votes.vote = '0' and votes.post_id = posts.id) as downvotes"))
    ->first();

$upvotes = $postVotes->upvotes;
$downvotes = $postVotes->downvotes;

$post = Post::where('id', $post_id)->first();
$post->hotness = $rank->hotness($upvotes, $downvotes, strtotime($post->created_at));
$post->save();

If there is a better way to do this, please let me know.