【问题标题】:CakePHP3 associated entities not coming through from find() (or get) even with contain clause即使使用包含子句,CakePHP3 关联实体也无法从 find() (或 get)中获得
【发布时间】:2015-09-17 15:56:14
【问题描述】:

[编辑] 已解决,见:https://stackoverflow.com/a/32638610/221650

一些关联的数据没有通过,尽管它在contain 子句中。

如果我在Projects 表中设置belongsToMany 关系,我可以获得$project->Participants,与ParticipantsProjectParticipants 相关,但这样我仍然无法访问与ProjectParticipants 关联的其他表即使$project->participants->_joinData->other_related_table

如何使用相同的查询获得ProjectParticipantsParticipants

代码:

// Database: Projects <--1:N-- ProjectParticipants --M:1--> Participants

// ProjectController:
    $project = $this->Projects->get($id, ['contain'=>[
            'ProjectParticipants.Participants']);
// ProjectsTable:
    $this->hasMany('ProjectParticipants', [
        'foreignKey' => 'project_id']);
// ProjectParticipantsTable:
    $this->belongsTo('Participants', [
        'foreignKey' => 'participant_id']);

【问题讨论】:

    标签: cakephp orm cakephp-3.0 model-associations


    【解决方案1】:

    这是一个非常复杂的多对多关系。

    //projectTable
    $this->belongsToMany('Participants');
    
    //praticipantsTable
    $this->belongsToMany('Projects');
    

    Bookmark Tutorial 中对此进行了很好的解释。

    【讨论】:

    • 但我已经在我的问题中提到了belongsToMany 关系。
    【解决方案2】:

    抱歉,它工作正常,我没有注意到有一个自定义 Entity\Project::_getParticipants() 返回一个集合。
    对该对象的简单调试显示一切正常,但是当通过 foreach 运行它时,关联消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多