【问题标题】:how do I get all associated data for a given ID in CakePhp 3 using get()?如何使用 get() 在 CakePhp 3 中获取给定 ID 的所有关联数据?
【发布时间】:2021-06-29 09:03:29
【问题描述】:

这是我的情况....

  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']);
    
  2. 当我调试时,我得到以下除了...

    /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. 除了我将结果传递给 view.ctp 时,school_unit_id、asset_source_id、asset_category_id、asset_group_class_id、condition_id、asset_status_id 都显示保存在资产表中的相应 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. 如何显示相应的显示字段而不是 ID?注意asset_sources 表只关联到assets 表。然后assets 表关联到school_units、asset_sources、asset_categories、asset_group_classes、conditions、asset_status 表。在我看来。我想看到school_unit_name 而不是school_unit_id。注意:我使用烘焙命令来创建应用程序。

谢谢

【问题讨论】:

    标签: php mysql cakephp cakephp-3.0


    【解决方案1】:

    阅读收容措施。它会让你包含任何你想要的东西。 'contain' =&gt; ['Assets' =&gt; ['SchoolUnits']] 应该在这里工作,然后你可以在你的视图中使用 $assets-&gt;school_unit-&gt;name 或类似的东西。

    【讨论】:

    • 谢谢@Greg。这就像一个魅力。我将在 CakePhp 食谱中阅读有关遏制的内容。再次,谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多