我如何在CakePhp 3中使用get()得到一个给定ID的所有相关数据?

3gtaxfhh  于 2022-11-11  发布在  PHP
关注(0)|答案(1)|浏览(144)

我的情况是这样的......
1.我可以根据从GUI传递的项目ID查看项目详细信息

public function view($id = null){

$id = $this->request->getData('assetsource_id');
$assetSource = $this->AssetSources->get($id, [
    'contain' => ['Assets']
]);

debug($assetSource);
die();

$this->set('assetSource', $assetSource);
$this->set('_serialize', ['assetSource']);

1.当我调试时,我得到以下内容,除了...

/src/Controller/AssetSourcesController.php (line 64)

  object(App\Model\Entity\AssetSource) {

  'id' => (int) 18,
  'name' => 'Donated',
  'created_by' => '',
  'assets' => [
(int) 0 => object(App\Model\Entity\Asset) {

    'id' => (int) 1,
    'school_unit_id' => (int) 33,
    'asset_source_id' => (int) 18,
    'asset_description' => 'TOYOTA HILUX',
    'date_of_entry' => object(Cake\I18n\FrozenDate) {

        'time' => '2021-05-31T00:00:00+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false

    },
    'date_of_purchase' => object(Cake\I18n\FrozenDate) {

        'time' => '2021-05-31T00:00:00+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false

    },
    'grn_number' => 'KBHBBH92',
    'name_of_supplier' => 'TOYOTA ZAMBIA',
    'serial_number' => 'YTDIYTFYUFOGOOHH',
    'location' => 'BURSAR',
    'asset_category_id' => (int) 24,
    'asset_group_class_id' => (int) 65,
    'full_asset_number' => 'GGFUYG88',
    'condition_id' => (int) 12,
    'asset_status_id' => (int) 14,
    'value' => '400,000',
    'custodian_name' => 'JOE BANDA',
    'custodian_phone' => '0966010101',
    'custodian_email' => 'bursar@unza.zm',
    'created' => object(Cake\I18n\FrozenTime) {

        'time' => '2021-05-31T07:26:31+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false

    },
    'modified' => object(Cake\I18n\FrozenTime) {

        'time' => '2021-05-31T07:26:31+00:00',
        'timezone' => 'UTC',
        'fixedNowTime' => false

    },
    'created_by' => 'admin',
    '[new]' => false,
    '[accessible]' => [
        '*' => true,
        'id' => false
    ],
    '[dirty]' => [],
    '[original]' => [],
    '[virtual]' => [],
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'Assets'

}
   ],
     '[new]' => false,
     '[accessible]' => [
     '*' => true,
     'id' => false
   ],
     '[dirty]' => [],
     '[original]' => [],
     '[virtual]' => [],
     '[errors]' => [],
     '[invalid]' => [],
     '[repository]' => 'AssetSources'
   }

1.除了我将结果传递给视图的时候。ctp、school_unit_idasset_source_idasset_category_idasset_group_class_idcondition_idasset_status_id显示的是保存在Assets表中的相应ID。

<?php foreach ($assetSource->assets as $assets) : ?>
                                    <tr>
                                        <td><?php echo $i++ ?></td>
                                        <td><?= h($assets->school_unit_id) ?></td>
                                        <td><?= h($assets->asset_description) ?></td>
                                        <td><?= h($assets->date_of_purchase) ?></td>
                                        <td><?= h($assets->name_of_supplier) ?></td>
                                        <td><?= h($assets->location) ?></td>
                                        <td><?= h($assets->condition_id) ?></td>
                                        <td><?= h($assets->value) ?></td>
                                        <td><?= h($assets->custodian_name) ?></td>

                                    </tr>
                                <?php endforeach; ?>

1.如何显示各个显示字段而不是ID?注意asset_sources表只关联assets表,那么assets表关联school_unitsasset_sourcesasset_categoriesasset_group_classesconditionsasset_status表。在我的视图中。我希望看到school_unit_name,而不是school_unit_id。注意:我使用bake命令创建应用程序。
谢谢

dgsult0t

dgsult0t1#

读一读包容性。它会让你包括你想要的任何东西。'contain' => ['Assets' => ['SchoolUnits']]应该在这里工作,然后你可以在你的视图中使用$assets->school_unit->name或类似的东西。

相关问题