Search code examples
phpactiverecordrelationshipphalcon

Category isn't getting related video blogs?


I am trying to get category related video blogs by below code but i get nothing in var_dump? I want to get category related videos:

 $category = VideoBlogCategoryModel::findFirst(1); // This returns category successfully and there are many video   blogs having this category linked
    var_dump($category->getVideoBlogs());exit; 

VideoBlogModel.php

public function initialize(){

    // Run base initialize code
    parent::initialize();

    // Configure Relation with VideoBlogCategoryModel
    $this->belongsTo('category_id', VideoBlogCategoryModel::class, 'id', array(
        'alias' => 'videoCategory',
        'foreignKey' => true
    ));
}
public function getVideoCategory(){
    return $this->videoCategory;
}

public function setVideoCategory($videoCategory){
    $this->videoCategory = $videoCategory;
}

VideoBlogCategoryModel.php

public function initialize(){

    // Run base initialize code
    parent::initialize();

    // Configure relation with VideoBlogModel
    $this->hasMany('id', VideoBlogModel::class, 'category_id', array(
        'alias' => 'videoBlogs',
        'foreignKey' => true,
        'cxAction' => static::ACTION_CASCADE_DELETE
    ));
}
   public function getVideoBlogs(){
    return $this->videoBlogs;
}

public function setVideoBlogs($videoBlogs){
    $this->videoBlogs = $videoBlogs;
}

Let me know if anything else is required, I will share it.


Solution

  • In VideoBlogCategoryModel.php change

    public function getVideoBlogs() {
       return $this->videoBlogs;
    }
    

    to

    public function getVideoBlogs() {
       return $this->getRelated('videoBlogs');
    }
    

    Then try accessing it like:

    $category = VideoBlogCategoryModel::findFirst(1); 
    $videos = $category->getVideoBlogs();
    
    foreach( $videos as $video ) { 
      // access data here
      var_dump($video->anyProperty()); // e.g $video->getId()
    }