CakePHP 3.0关联不显示来自另一个模型的displayField

CakePHP 3.0关联不显示来自另一个模型的displayField,cakephp,associations,Cakephp,Associations,所以我有一个用户表和一个安全问题表。我可以创建一个有相关安全问题的用户,但是当我查看配置文件时,我无法正确显示displayField 下面是我的UsersTable.php代码 public function initialize(array $config) { parent::initialize($config); $this->table('users'); $this->displayField('email'); $this->p

所以我有一个用户表和一个安全问题表。我可以创建一个有相关安全问题的用户,但是当我查看配置文件时,我无法正确显示displayField

下面是我的UsersTable.php代码

public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('users');
    $this->displayField('email');
    $this->primaryKey('id');
    $this->hasOne('SecurityQuestions',
        [ 'foreignKey' => 'security_question_id']);

    $this->addBehavior('Timestamp');
}
    public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('security_questions');
    $this->displayField('question');
    $this->primaryKey('security_question_id');

    $this->hasMany('Users', ['foreignKey'=>'security_question_id', 'bindingKey'=>'security_question_id']);
    $this->belongsTo('SecurityQuestions', [
        'foreignKey' => 'security_question_id',
        'joinType' => 'INNER'
    ]);
}
下面是SecurityQuestionsTable.php的代码

public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('users');
    $this->displayField('email');
    $this->primaryKey('id');
    $this->hasOne('SecurityQuestions',
        [ 'foreignKey' => 'security_question_id']);

    $this->addBehavior('Timestamp');
}
    public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('security_questions');
    $this->displayField('question');
    $this->primaryKey('security_question_id');

    $this->hasMany('Users', ['foreignKey'=>'security_question_id', 'bindingKey'=>'security_question_id']);
    $this->belongsTo('SecurityQuestions', [
        'foreignKey' => 'security_question_id',
        'joinType' => 'INNER'
    ]);
}
以下是我的UsersController.php视图方法:

    public function view($id = null)
{
    $user = $this->Users->get($id, [
        'contain' => []
    ]);

    $this->set('user', $user);
    $this->set('_serialize', ['user']);
}
最后但并非最不重要的一点是视图代码

<h3><?= h($user->id) ?></h3>
<table class="vertical-table">
    <tr>
        <th><?= __('Email') ?></th>
        <td><?= h($user->email) ?></td>
    </tr>
    <tr>
        <th><?= __('Password') ?></th>
        <td><?= h($user->password) ?></td>
    </tr>
    <tr>
        <th><?= __('First Name') ?></th>
        <td><?= h($user->first_name) ?></td>
    </tr>
    <tr>
        <th><?= __('Last Name') ?></th>
        <td><?= h($user->last_name) ?></td>
    </tr>
    <tr>
        <th><?= __('Id') ?></th>
        <td><?= $this->Number->format($user->id) ?></td>
    </tr>
    <tr>
        <th><?= __('Created') ?></th>
        <td><?= h($user->created) ?></td>
    </tr>
    <tr>
        <th><?= __('Expiration') ?></th>
        <td><?= h($user->expiration) ?></td>
    </tr>
    <tr>
        <th><?= __('User Status') ?></th>
        <td><?= h($user->user_status) ?></td>
    </tr>
    <tr>
        <th><?= __('Security Question') ?></th>
        <td><?= h($user->security_question_id) ?></td>
    </tr>
    <tr>
        <th><?= __('Security Question Answer') ?></th>
        <td><?= h($user->security_question_answer) ?></td>
    </tr>
</table>


我对CakePHP相当陌生

一些你需要改变的小事情

在您的UsersTable中:

$user = $this->Users->get($id, [
    'contain' => []
]);
需要

$user = $this->Users->get($id, [
    'contain' => ['SecurityQuestions']
]);
<tr>
    <th><?= __('Security Question') ?></th>
    <td><?= h($user->security_question->question) ?></td>
</tr>
在您的视图文件中:

<tr>
    <th><?= __('Security Question') ?></th>
    <td><?= h($user->security_question_id) ?></td>
</tr>

需要

$user = $this->Users->get($id, [
    'contain' => ['SecurityQuestions']
]);
<tr>
    <th><?= __('Security Question') ?></th>
    <td><?= h($user->security_question->question) ?></td>
</tr>


显示字段主要用于创建下拉列表,并由一些构建框架视图(如)的插件使用。

Hii Dakota,您能解释一下
$user->security\u question->question
中最后一个代码在做什么吗。我需要类似的帮助