Store a slug column for the article title in the db that gets created at the time of creating/saving the news item. Laravel has a str_slug() helper to create it (removes spaces, adds dashes, etc). https://laravel.com/docs/5.7/helpers#method-str-slug
Then your route could just be
Route::get('/news/{slug}', 'YourController@slugMethod');
And you'd just search on that column
public function slugMethod($slug) {
$article = News::where('slug', $slug)->firstOrFail();
}
There is also a way to set laravel up to automatically retrieve it for you, using the slug column. This is much easier to set up and then you never need to manually query things like $news = News::findOrFail($id);. It does it automatically. Look into Route Model Binding: https://laravel.com/docs/5.7/routing#route-model-binding