如何在索引视图中打印关联数据

时间:2017-08-31 00:49:07

标签: php html css cakephp cakephp-3.0

$subjects = $this->Subjects
    ->find('all', [
        'contain'=> [
            'Users'
        ],
        'fields'=> [
            'Users.username',
            'Users.email'
        ]
    ])
    ->hydrate(false)
    ->toArray();

$this->set('subjects', $subjects);

如何在Subjects控制器的INDEX视图中循环数据以显示如此图像

enter image description here

3 个答案:

答案 0 :(得分:1)

我测试了它。 E.g这是你的主题数组。

<?php
$array = array(
    0 => array(
        'Users'=>
        array('name' => 'John Doe',
        'email' => 'john@example.com'
        )
    ),
    1 => array(
        'Users'=>array(
        'name' => 'Abs Doe',
        'email' => 'jane@example.com'
        )
    ),
);
?> 

这是索引文件中的循环。

<table>
    <thead>
        <th>name</th>
        <th>email</th>
    </thead>
    <tbody>
        <?php foreach($array as $subject) :?>
            <tr>
                <td><?=$subject['Users']['name']?></td>
                <td><?=$subject['Users']['email']?></td>
            </tr>
        <?php endforeach;?>
    </tbody>
</table>

它按预期工作。

enter image description here

我不能给你回答。因为,我无法访问您的环境。但是,至少你可以知道哪些代码需要修改。 希望这有帮助。

答案 1 :(得分:1)

vardump的示例结果:

<?php
$array = array(
    0 => array(
        'math'=>40,
        'english'=>40,
        'history'=>40,
        'science'=>40,
        'user_id'=>64
        'user'=>
            array(
            'id' => 6
            'name' => 'User',
            'email' => 'user1@sample.com'
            )
    )
);
?> 

这是基于您提供的vardump编写的示例代码:

<table>
    <thead>
    /// Give your table headers
    </thead>
<tbody>
    <?php foreach($subjects as $subject) :?>
        <tr>
            <td><?=$subject['math']?></td>
            <td><?=$subject['english']?></td>
            <td><?=$subject['history']?></td>
            <td><?=$subject['science']?></td>
            <td><?=$subject['user_id']?></td>
            <td><?=$subject['user']['id']?></td>
            <td><?=$subject['user']['name']?></td>
            <td><?=$subject['user']['email']?></td>
        </tr>
    <?php endforeach;?>
</tbody>

答案 2 :(得分:0)

先玩一些css。希望这段代码可以帮到你。

您需要对此进行一些更改。

'fields'=> [
        'Users.username',
        'Users.email',
        //add more fields that you want to display here
]



<table>
    <thead>
         <th>math</th>
         <th>english</th>
         <th>history</th>
         <th>science</th>
         <th>id</th>
         <th>user_id</th>
         <th>username</th>
         <th>email</th>
    </thead>
    <tbody>
        <?php foreach($subjects as $subject) :?>
            <tr>
                <td><?=$subject['Users']['match']?></td>
                <td><?=$subject['Users']['english']?></td>
                <td><?=$subject['Users']['history']?></td>
                <td><?=$subject['Users']['science']?></td>
                <td><?=$subject['Users']['id']?></td>
                <td><?=$subject['Users']['user_id']?></td>
                <td><?=$subject['Users']['username']?></td>
                <td><?=$subject['Users']['email']?></td>
            </tr>
        <?php endforeach;?>
    </tbody>
</table>