简体   繁体   English

如何使用 get() 在 CakePhp 3 中获取给定 ID 的所有关联数据?

[英]how do I get all associated data for a given ID in CakePhp 3 using get()?

Here is my situation....这是我的情况......

  1. I can view item details based on item ID passed from GUI我可以根据从 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']);
  2. When I debug, I get the following except...当我调试时,我得到以下信息,除了...

     /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' }
  3. Except when I pass the result to the view.ctp, school_unit_id , asset_source_id , asset_category_id , asset_group_class_id , condition_id , asset_status_id are showing the corresponding IDs as saved in Assets table.除了当我将结果传递给 view.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; ?>
  4. How do I show the respective display fields instead of IDs?如何显示相应的显示字段而不是 ID? Notice asset_sources table is only associated to assets table.注意asset_sources表只关联到assets表。 Then assets table is associated to school_units , asset_sources , asset_categories , asset_group_classes , conditions , asset_status tables.然后assets表与school_unitsasset_sourcesasset_categoriesasset_group_classesconditionsasset_status表相关联。 In my view.在我看来。 I want to see school_unit_name not school_unit_id .我想看到school_unit_name而不是school_unit_id NOTE: I used bake commands to create the application.注意:我使用了烘焙命令来创建应用程序。

Thanks谢谢

Read up on containment.阅读收容措施。 It will let you include whatever you want.它会让你包括任何你想要的。 'contain' => ['Assets' => ['SchoolUnits']] should work here, and then you can use $assets->school_unit->name or something like that in your view. 'contain' => ['Assets' => ['SchoolUnits']]应该在这里工作,然后你可以在你的视图中使用$assets->school_unit->name或类似的东西。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM