Posts

Rendering Data in Yii 2 with GridView and ListView

Image
In my previous article about Yii 2.0, I introduced the ActiveRecord implementation. Once you have some data in your database you’ll want to be able to show it. Yii uses DataProviders to interact with data sources and it provides some widgets to output the data. Of these, the ListView and GridView provide the most functionality. The example I’m going to work with the database example that I introduced in my previous article again. Not very original, but quite useful as an example; a blog like SitePoint. A small wrap-up of this database design and its Yii models which I’ll be using in this example: The Authors model has one relation method call getArticles() that provides an Articles[] attribute to the model. The Articles model has one relation method call getAuthor() that provides the Author and a method getTags() that provides the Tags[] . The Tags model has one relation method call getArticles that provides Articles[] . I won’t be using the ArticlesTags ta...

ActiveRecord in YII2

Image
The ActiveRecord class in Yii provides an object oriented interface (aka ORM) for accessing database stored data. Similar structures can be found in most modern frameworks like Laravel, CodeIgniter, Smyfony and Ruby. Today, we’ll go over the implementation in Yii 2.0 and I’ll show you some of the more advanced features of it. Model class intro The Yii ActiveRecord is an advanced version of the base yii\base\Model which is the foundation of the Model-View-Controller architecture. I’ll quickly explain the most important functionality that ActiveRecord inherits from the Model class: Attributes The business data is held in attributes. These are publicly available properties of the model instance. All the attributes can conveniently be assigned massively by assigning any array to the attributes property of a model. This works because the base Component class (the base of almost everything in Yii 2.0) implements the __set() method which in turn calls the setAttributes()...