Your code looks fine, but there are a couple of things to be aware of:
Post::find($id); acts upon the primary key, if you have set your primary key in your model to something other than id by doing:
protected $primaryKey = 'slug';
then find will search by that key instead.
Laravel also expects the id to be an integer, if you are using something other than an integer (such as a string) you need to set the incrementing property on your model to false:
public $incrementing = false;