Best practice is to write your queries in a separate layer. So separate from your controller, and separate from your model. Controller best practice also depends on the scale of your project and your specific demand for maintainability.
As soon as you scale up the project, try to extract more so maintainability is less of an issue. A layer in between for queries scoped around the User model can look something like:
class UserRepository {
public function __construct(Illuminate\Database\DatabaseManager $db)
{
$this->db = $db;
}
public function getLatestUsers($limit = 5) {
//$this->db->table('users')->
}
}
For more best practices, you should take a look at all the resources that are being created around laravel. Like