【问题标题】:Phalcon model hasManyToMany relation with additional conditionPhalcon 模型与附加条件具有多对多关系
【发布时间】:2015-04-14 15:40:00
【问题描述】:

是否可以选择向 Phalcon 向导函数 hasManyToMany 添加附加条件?我检查了phalcon docs,但他们没有列出所有可能的 hasManyToMany 选项(仅列出别名和foreginKey)。 如果这不能通过 hasManyToMany 完成,是否还有其他 Phalcon 选项可用 - 例如。检索所有然后过滤一些模型加载事件?

简单示例: 我有 3 个表 Group、Relation 和 User,并且想使用 Relation 表在 User 模型中创建两个属性 - active_groups 和 inactive_groups。

代码:

class GroupModel extends Model {
    public $id;    
    public $name;
}

class RelationModel extends Model {
    public $id;    
    public $related_id_one;
    public $related_id_two;
    public $active;
}

class UserModel extends Model {

    public function initialize() {

        $this->hasManyToMany(
            "id",
            "RelationModel",
            "related_id_one",
            "related_id_two",
            "GroupModel",
            "id",
            array(  'alias' => 'active_groups', 
                    'conditions' => 'RelationModel.active = true')
        );

        $this->hasManyToMany(
            "id",
            "RelationModel",
            "related_id_one",
            "related_id_two",
            "GroupModel",
            "id",
            array(  'alias' => 'inactive_groups', 
                    'conditions' => 'RelationModel.active = false')
        );
    }
}

Tnx!

【问题讨论】:

    标签: model phalcon


    【解决方案1】:

    您可以改为这样做。顺便说一句,不完全确定这段代码是否正常运行,但希望你能明白。

    我不知道 phalcon 是否有条件 / where 选项

    class GroupModel extends Model {
        public $id;    
        public $name;
    }
    
    class RelationModel extends Model {
        public $id;    
        public $related_id_one;
        public $related_id_two;
        public $active;
    }
    
    class UserModel extends Model {
    
        public function initialize() {
    
            $this->hasManyToMany(
                "id",
                "RelationModel",
                "related_id_one",
                "related_id_two",
                "GroupModel",
                "id",
                array(  'alias' => 'groups')
            );
    
        }
    
        public function getActiveGroups() {
          return $this->getGroups('RelationModel.active = true');
        }
    
        public function getInactiveGroups() {
          return $this->getGroups('RelationModel.inactive = false');
        }
    }
    

    【讨论】:

    • tnx 回复。最后我们实现了这个解决方案......虽然 hasManyToMany 中的条件会更酷
    猜你喜欢
    • 2014-05-16
    • 2021-10-25
    • 2011-11-15
    • 2018-05-27
    • 2020-05-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多