OpenEdge v PHP

I’m leaving this here for now – but a new series on Modernising Progress is soon to come online, which will go into much more detail.

My primary programming skill is with Progress / OpenEdge. I’ve programmed applications using it for over 20 years and so I have a pretty good handle on all that it offers.

For my local web work I’ve mainly used PHP and over the last couple of years I’ve become an advocate of the Laravel PHP Framework.

I’ve already written a browser based web application using Laravel.  I’m currently refactoring it to partition the code to apis to cater for future UIs and mobile apps.

Now I want to compare my main two technologies.  Initially I’m going to create a Proof of Concept app using the good old Progress/OpenEdge Sports database.  I’ll be weighing up the pros and cons.

Before starting the project I can already see that cost will be a factor.

To develop with Laravel / PHP is free. To host and serve MYSQL/Mariadb/Postgres databases is cheap.

To develop with OpenEdge 11 is pretty expensive. To license concurrent users & appservers to an application is also a large cost, and then there’s setting up the hardware too.

By developing the Sports application in both Laravel & OpenEdge I’ll be able to measure and cost all the pros and cons.

By the end of this process I’ll hopefully be able to make decisions on the the larger projects that I intend to implement.

Initial requirements (so far)

Laravel Application Spec

  • I’ll be using the latest Laravel 5.3
  • MYSQL as a database.
  • In built user table for app authentication.
  • We’ll create tasks allocated to those users that we can add/modify/delete.
  • We’ll try to do that with an API so that not only can our web app use those functions, but another authenticated UI can access them too.


OpenEdge Application Spec

  • OpenEdge 11.6
  • I’ll use a Progress database.
  • We’ll try and investigate authorisation tasks.
  • We’ll create tasks allocated to those users that we can add/modify/delete.
  • We’ll try to do that with an API so that not only can our web app use those functions, but another authenticated UI can access them too.


Dave Walker
Dave Walker is a developer with 20+ years IT experience. Working with Progress/OpenEdge since 1995 he's been involved through the full gambit of the software development life cycle, from systems design through to front line support, customer training, and everything in between. Dave doesn't enjoy writing about himself in the third person.


  1. Just read about your computers. Have you tried switching it off then on?
    Sorted. Respect due.

    Best regards
    Funniest in the flat 1993.

  2. I’m interested to hear about this progress.
    Would it be possible to make OpenEdge work with Laravel Eloquent Models?
    I tried with OpenEdge 11.4 and Laravel 5.3. I could run select queries OK using DB::select(…) but it all fell apart for me when trying anything fancy.
    My goal is to make a Laravel API with our OpenEdge data. I’m not an OpenEdge developer though.

    1. Hi Jeremy,

      Interesting that you managed to even get DB::select working. How did you manage that? How did you setup the OE db?

      With 5.3 at least results will be in collections, so that’s maybe something to start with.

      My plan is to initially implement db replication (OE->MySQL) and that would quickly cater for an API.

  3. To get DB::select working I’m using a Wamp on a Windows 2012 R2 server. You have to make user it’s the 32bit version of Wamp because OpenEdge Client Networking ODBC is 32bit, then you have to make sure you run the 32bit version of the ODBC Setup tool (%windir%\syswow64\odbcad32.exe) to create a System DSN otherwise it wont work.

    Next you need to get the Illuminate\Database\Connectors\Connector createConnection method to return a PDO connection using the System DSN info you created. I’m still hacking it together today and trying to create a proper driver to include in my config/database.php – It’s not a simple thing, at least for me.

    Luckily, my solution does not require Insert, Update or Delete queries. My API is going to be dead simple.

    Does db replication run all the time? Is it in sync or is it something you have to trigger? Laravel and MySQL are a match made in heaven. It would be nice if I could just setup some kind of easy synchronisation then make my application.

    Thanks for your reply!

    1. Jeremy thats great! please share your db connector, it would be fantastic to be able to do Selects from laravel.

  4. Did you ever manage to get the Laravel framework to work correctly with a Progress database using the ODBC connector?

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.