Which Framework is being used for database access?

Hello,

Would the developer team please share information about the way SuiteCRM 8.8 currently interacts with the database as I’m unsure which framework is being used for new versions. The development docs just mention Beans.

What is the development strategy for future versions ? Which way of accessing the database will become the standard ?

Symfony and Doctrine
Or Laravel and Eloquent
Or Beans
Or SQL

Thanks.

Maybe my answer is not complete, but this is what I know (or what I think I know :stuck_out_tongue: )

There’s still a lot of v7 code which sometimes uses direct SQL, most often goes through the old SugarCRM classes which rely on direct access to PHP mysqli modules etc.

The future will likely be Symfony Doctrine.

Beans are a separate question, because they are application-level constructions. They are SuiteCRM’s objects to deal with data.

Most of what you will want to develop will actually access things one level above that, through the GraphQL API. Note that in old v7, the API was only used for external access, i.e., for different apps interacting with SuiteCRM. But in v8 the API is always present, even SuiteCRM’s own UI goes through that same API. So you can safely develop for that, get all the business logic applied, and whenever things change underneath (to Doctrine), most likely the API won’t change at all and everything should just work :tm:

I hope this helps

I feel like the team should choose something that’s easier for the developers as well as more standard and secure for the SuiteCRM.

Hello,

I have taken a quick look at GraphQL API and if I were only working on the SuiteCRM database then it sounds like the way to go.

However I need to access the SuiteCRM database and other remote databases too which GraphQL API does not appear to be able to do . Is that correct ?

Symfony and Doctrine and or SQL can connect to multiple databases so they may be my best option for now ?

It’s a shame that these frameworks or API’s never consider the possibility of multiple database connections which is a shame. In my view, a CRM should make available data from all systems in an organisation via their databases.

Something for the developers to consider moving forward.

Thanks.

I don’t think you’re supposed to integrate different systems at the database level… because one app is not supposed to know about the other app’s business logic and constraints.

If you need to integrate external systems, the architecture is there, there are many ways to do this, depending on your specific requirements, but you would need to call into your other app, or receive calls from it, and handle things appropriately. Symfony is highly extendable and SuiteCRM core is heavily constructed around Symfony concepts.

For example, if you need to receive data you can extend the GraphQL API and have the other system call it.

If you really want direct database access nothing is stopping you, either. You can just open another connection to another database and do what you need. This would not be a good architecture for SuiteCRM as a whole, or for a big integration, but if you have simple and stable requirements… go ahead.

Hello,

Can the GraphQL API be extended in a SuiteCRM 8 upgrade safe way ?

Is the GraphQL API fully documented including details on how to extend its features ? Do you have a link ?

Symfony has a lot of great features that I can utilise. The question is how much of SuiteCRM 8 is coded in Symfony and how much is still legacy ? Have you any idea ?

Can I code in Symfony and GraphQL API in a custom extension or module ?

The SuiteCRM 8 install and upgrade procedures require a mariadb database. Am I correct in thinking this database can be on a local box or on a remote database server? Do you know if remote databases have been tested ?

Thanks.