public function testAssetHydration() { $entry = Entry::whereHas('chan', function ($query) { $query->whereNotNull('field_group'); })->get()->first(); $this->assertInstanceOf('\\rsanchez\\Deep\\Collection\\AssetCollection', $entry->assets); }
/** * {@inheritdoc} */ protected static function joinTables() { return array_merge(parent::joinTables(), array('relationships' => function ($query) { $query->join('relationships', 'relationships.child_id', '=', 'channel_titles.entry_id'); })); }
/** * Constructor * * Build all the dependencies * * @var array $config an EE config array */ public function __construct($config = array()) { Carbon::setToStringFormat(Carbon::ISO8601); $this->singleton('config', function ($app) use($config) { return $config; }); $this->bind('db', function ($app) { return Model::resolveConnection(Model::getGlobalConnection()); }); $this->singleton('Field', function ($app) { return new Field(); }); $this->singleton('FieldRepository', function ($app) { return new FieldRepository($app->make('Field')); }); $this->singleton('Channel', function ($app) { $channel = new Channel(); $channel->setFieldRepository($app->make('FieldRepository')); return $channel; }); $this->singleton('Site', function ($app) { return new Site(); }); $this->singleton('UploadPref', function ($app) { return new UploadPref(); }); $this->singleton('CategoryField', function ($app) { return new CategoryField(); }); $this->singleton('MemberField', function ($app) { return new MemberField(); }); $this->singleton('CategoryFieldRepository', function ($app) { return new CategoryFieldRepository($app->make('CategoryField')); }); $this->singleton('MemberFieldRepository', function ($app) { return new MemberFieldRepository($app->make('MemberField')); }); $this->singleton('ChannelRepository', function ($app) { return new ChannelRepository($app->make('Channel')); }); $this->singleton('SiteRepository', function ($app) { return new SiteRepository($app->make('Site')); }); $this->singleton('UploadPrefRepository', function ($app) { if (isset($app['config']['upload_prefs'])) { return new ConfigUploadPrefRepository($app['config']['upload_prefs']); } return new UploadPrefRepository($app->make('UploadPref')); }); $this->singleton('Asset', function ($app) { return new Asset(); }); $this->singleton('File', function ($app) { return new File(); }); $this->singleton('GridCol', function ($app) { return new GridCol(); }); $this->singleton('GridRow', function ($app) { return new GridRow(); }); $this->singleton('MatrixCol', function ($app) { return new MatrixCol(); }); $this->singleton('MatrixRow', function ($app) { return new MatrixRow(); }); $this->singleton('PlayaEntry', function ($app) { return new PlayaEntry(); }); $this->singleton('RelationshipEntry', function ($app) { return new RelationshipEntry(); }); $this->singleton('HydratorFactory', function ($app) { return new HydratorFactory($app->make('db'), $app->make('SiteRepository'), $app->make('UploadPrefRepository'), $app->make('Asset'), $app->make('File'), $app->make('GridCol'), $app->make('GridRow'), $app->make('MatrixCol'), $app->make('MatrixRow'), $app->make('PlayaEntry'), $app->make('RelationshipEntry')); }); $this->singleton('Category', function ($app) { $category = new Category(); $category->setCategoryFieldRepository($app->make('CategoryFieldRepository')); $category->setChannelRepository($app->make('ChannelRepository')); return $category; }); $this->singleton('Member', function ($app) { $member = new Member(); $member->setMemberFieldRepository($app->make('MemberFieldRepository')); return $member; }); $this->singleton('Title', function ($app) { $app->make('Category'); $app->make('Member'); $title = new Title(); $title->setChannelRepository($app->make('ChannelRepository')); $title->setSiteRepository($app->make('SiteRepository')); $title->setHydratorFactory($app->make('HydratorFactory')); return $title; }); $this->singleton('Entry', function ($app) { $app->make('Title'); $entry = new Entry(); $entry->setFieldRepository($app->make('FieldRepository')); return $entry; }); }