CakePHP 3.0 - Association' propertyName'没有应用于查询

时间:2015-04-19 19:33:31

标签: cakephp cakephp-3.0

设置关联后,我将运行一个包含正确包含的paginate,我将得到我想要的结果。但是,我想命名数据以区别于表之间已经建立的关联。

我使用propertyName来执行此类任务,但是当我这样做时,结果是该属性始终为null,并且我要求的可包含内容将显示在表名下。

例如:

// MarksTable.php    
public function initialize(array $config)
{
    $this->table('marks');
    $this->displayField('name');
    $this->primaryKey('id');
    $this->belongsTo('Hunts', [
        'foreignKey' => 'hunt_id'
    ]);
    $this->belongsTo('Winners', [
        'className' => 'Pictures',
        'foreignKey' => 'winner_id',
        'propertyName' => 'banana'
    ]);
    $this->hasMany('Submissions', [
        'className' => 'Pictures',
        'foreignKey' => 'mark_id',
        'propertyName' => 'submissions'
    ]);
}

控制器:

// AdminController.php

public function marks() {

    $this->paginate = [
        'contain' => ['Hunts.Games', 'Submissions.Users', 'Winners'],
        'order' => ['Marks.id' => 'DESC']
    ];

    $this->set('marks', $this->paginate('Marks'));
}

我得到的变量:

variable dump

有关如何重命名'的任何建议该协会?我已尝试使用相同结果的互惠(即:Pictures hasOne Winners),并且该属性的名称为Mark而不是banana,但数据是正确的。

编辑:表格结构 -

marks       Type        Null    Default
id          int(11)     No       
name        varchar(45) No       
hunt_id     int(11)     No       
winner_id   int(11)     Yes     NULL     


pictures    Type            Null    
id          int(11)         No       
user_id     int(11)         No       
mark_id     int(11)         No       
guid        varchar(255)    No       
timestamp   datetime        No       

这个想法是,一旦图片被投票,一个标记(思考'提示')将用获胜的图片更新.id。如果我们只需要获取哪些标记就可以节省一些SQL时间,如果需要,我们可以使用关联来查找相关图片(和picture.user)。不过,我会第一个承认它不是该专栏的好地方。

0 个答案:

没有答案