2016-03-19 3 views
0

Ich habe gedruckte Objekt und versuchen, drucken Tenats.stageWie _matchingData Objektwert in cakephp 3

<?php foreach ($tenancies as $tenancy): ?> 

    <td><?= debug($tenancy); ?></td> 

drucken =>

object(App\Model\Entity\Tenancy) { 

    'created' => object(Cake\I18n\FrozenTime) { 

     'time' => '2016-03-18T15:57:40+00:00', 
     'timezone' => 'UTC', 
     'fixedNowTime' => false 

    }, 
    'tenants' => [], 
    'property' => object(Cake\ORM\Entity) { 

     'id' => (int) 4110, 
     'address1' => '119 Alan Moss Road', 
     'postcode' => 'le115ly', 
     '[new]' => false, 
     '[accessible]' => [ 
      '*' => true 
     ], 
     '[dirty]' => [], 
     '[original]' => [], 
     '[virtual]' => [], 
     '[errors]' => [], 
     '[invalid]' => [], 
     '[repository]' => 'Properties' 

    }, 
    '_matchingData' => [ 
     'Tenants' => object(Cake\ORM\Entity) { 

      'stage' => (int) 2, 
      '[new]' => false, 
      '[accessible]' => [ 
       '*' => true 
      ], 
      '[dirty]' => [], 
      '[original]' => [], 
      '[virtual]' => [], 
      '[errors]' => [], 
      '[invalid]' => [], 
      '[repository]' => 'Tenants' 

     } 
    ], 

Ich muss 'Bühne' Wert

drucken

Hilfe bitte

Antwort

4

So drucken Sie _matchingData

<td><?= h($tenancy->_matchingData['Tenants']->stage); ?></td> 

Aber wenn Sie die Haupt-Eltern-Feld-ID (Tenancy.id) automatisch angeben, werden Ihre Daten viel besser aussehen. meine Eltern Modell ist zum Beispiel „Tenancy“ Jetzt bin ich immer Tenant.id und Tenancy.id und Property.id:

$tenancies = $this 
      ->find() 
      ->select([ 
       'Tenancy.id', 'Tenancy.created', 'Tenancy.stage', 
       'Properties.id', 'Properties.address1', 'Properties.postcode', 
       'Tenants.stage', 
      ]) 
      ->contain('Properties', function(\Cake\ORM\Query $query) { 
       return $query->where([ 
        'Properties.active' => 1 
       ]); 
      }) 
      ->contain([ 
       'Tenants' 
      ]) 
      ->matching('Tenants', function(\Cake\ORM\Query $query) { 
       return $query->where([ 
        'Tenants.active' => 1 
       ]); 
      }) 
      ->where([ 
       'Tenancy.active' => 1, 
       $conditions 
      ]) 
      ->order([ 
       'Tenancy.created' => 'DESC', 
       'Tenants.tenancy_id' 
      ]); 

     return $tenancies; 
    } 

Er druckt das Array mit tiefen Assoziationen, die kühl ist und ich kann meine Mieter Eigentum erhalten wie dies:

<td><?= h($tenancy->tenants->stage); ?></td> 

Drucke =>

0 => object(App\Model\Entity\Tenancy) { 

    'id' => (int) 3923, 
    'created' => object(Cake\I18n\FrozenTime) { 

     'time' => '2016-03-19T13:12:32+00:00', 
     'timezone' => 'UTC', 
     'fixedNowTime' => false 

    }, 
    'stage' => (int) 2, 
    'tenants' => [ 
     (int) 0 => object(Cake\ORM\Entity) { 

      'id' => (int) 8903, 
      'user_id' => (int) 15318, 
      'tenancy_id' => (int) 3923, 
      'needs_guarantor' => true, 
      'guarantor_id' => null, 
      'holding_fee' => (float) 50, 

Ergebnis: Stellen Sie sicher, immer Sie Ihre Frage richtig schreiben, so dass Sie Ihre Daten zugreifen nic e und ordentlich.