As you already know, SEBLOD is a powerful tool to build high-end websites and online applications using mostly user interfaces.
From content construction, content filling, to content output, there is always a dedicated user interface to gives us the ability to build applications only with parameters, drag & drops, various setups and out-of-the-box capabilities.
Of course sometimes for a specific workflow, advanced uses-cases, or complex interactions, we need to manipulate Content Items such as Articles, Categories, Users... programatically!
Joomla! already provides various ways of manipulating content :
- Database abstraction layer for custom SQL queries
but with SEBLOD, you data is stored in different tables, and it becomes quite complex to interact with all these tables.
JCckContent, our in-house "ORM"
So we needed our own, more specific and more advanced way of doing it, and here is JCckContent !
JCckContent is the main class, and each Object provides its own subclass such as:
Its purpose is to abstract as much as possible all actions related to Content manipulation:
- Being able to create an item without executing multiple INSERT queries.
- Being able to load an item or find items without writing a complex SELECT query.
- Being able to manipulate an item as a "whole".
One more thing
A JCckContent object consists in multiple table instances where each refers to a specific table.
As an example, here is the list of table instances for a Content Type: "Blog Post" (blog_post), based on the Joomla! Article object:
- "base" relates to #__content
- "core" relates to #__cck_core
- "more" relates to #__cck_store_form_blog_post
- "more2" relates to #__cck_store_item_content
A Content Item has 2 identifiers:
- the Primary Key, i.e the primary key of the "base" table, that we'll call $pk
- the SEBLOD IDentifier, i.e. the primary key of the "core" table, that we'll call $id
Additional note: $pk can only be used to identify a Content Item when the Object is known (or passed along).
Now let's find out how to create, load, find/search, delete, save, or interact with Content Items easily !