1. Go to this page and download the library: Download yii2tech/ar-eagerjoin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use yii\db\ActiveRecord;
use yii2tech\ar\eagerjoin\EagerJoinTrait;
class Item extends ActiveRecord
{
use EagerJoinTrait;
public function getGroup()
{
return $this->hasOne(Group::className(), ['id' => 'groupId']);
}
}
$items = Item::find()
->select(['Item.*', 'group__name' => 'Group.name', 'group__code' => 'Group.code'])
->joinWith('group', false) // disable regular eager loading!!!
->all();
foreach ($items as $item) {
var_dump($item->isRelationPopulated('group')); // outputs `true`!!!
echo $item->group->name; // no extra query performed!
echo $item->group->code; // no extra query performed!
echo get_class($item->group); // outputs 'Group'!
}
use yii\db\ActiveQuery;
use yii2tech\ar\eagerjoin\EagerJoinQueryTrait;
use yii\db\ActiveRecord;
use yii2tech\ar\eagerjoin\EagerJoinTrait;
class ItemQuery extends ActiveQuery
{
use EagerJoinQueryTrait;
// ...
}
class Item extends ActiveRecord
{
use EagerJoinTrait;
/**
* @inheritdoc
* @return ItemQuery the active query used by this AR class.
*/
public static function find()
{
return new ItemQuery(get_called_class());
}
// ...
}