Hi there,

I am having a problem with hasMany.
Here is my case:

Models:
ContractTable -> hasMany -> CustomValues


<?php
/**
 * Contract Model
 *
 * @property \Pilotage\NORM\Association\BelongsTo $Agents
 * @property \Pilotage\NORM\Association\BelongsTo $Plateau
 */
class ContractTable extends Table
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        $this->table('offresmop_contratclt');
        $this->displayField('cleaffaires');
        $this->primaryKey('cleaffaires');
        $this->addBehavior('Timestamp');
        $this->belongsTo('LastAgent', [
            'className' => 'Application.Agents',
            'foreignKey' => 'last_mod_agent_id',
            'joinType' => 'INNER'
        ]);
        $this->belongsTo('ValidAgent', [
            'className' => 'Application.Agents',
            'foreignKey' => 'validator_agent_id'
        ]);
        $this->belongsTo('FirstAgent', [
            'className' => 'Application.Agents',
            'foreignKey' => 'first_agent_id'
        ]);
        $this->belongsTo('Plateau', [
            'className' => 'Application.Plateau',
            'foreignKey' => 'plateau_id',
            'joinType' => 'INNER'
        ]);

        $this->belongsTo('Product', [
            'className' => 'Tranquillity.Products',
            'foreignKey' => 'idproduit',
            'joinType' => 'INNER'
        ]);

        $this->belongsTo('Client', [
            'className' => 'Tranquillity.Affaires',
            'foreignKey' => 'bp',
            'propertyName' => 'client',
            'joinType' => 'INNER'
        ]);

        $this->belongsTo('StatusRetour', [
            'className' => StatusTable::class,
            'foreignKey' => 'etatetur',
            'propertyName' => 'status_retur',
            'joinType' => 'INNER'
        ]);

        $this->belongsTo('Status', [
            'className' => StatusTable::class,
            'foreignKey' => 'etat',
            'propertyName' => 'status',
            'joinType' => 'INNER'
        ]);


        $this->hasMany('MetaValues', [
            'className' => MetaValuesTable::class,
            'foreignKey' => 'cleaffaire',
            'bindingKey' => 'cleaffaires',
            'strategy' => 'subquery',
            'joinType' => 'LEFT'
        ]);
    }
    /** Validation and stuff */



/**
 * Function findWithMetaValues - Add Meta Values to contract
 *
 * @author Bogdan SOOS <bogdan.s...@external.gdfsuez.com>
 *
 * @param Query $query
 * @return $this|array
 */
public function findWithMetaValues(Query $query) {
    return $query
        ->contain('MetaValues');
}
}



MetaValuesTable.php

<?php

/**
 * MetaValues Model
 *
 */
class MetaValuesTable extends Table
{
    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        $this->table('offresmop_meta_values');
        $this->displayField('cleaffaire');
        $this->primaryKey('id');
        $this->addBehavior('Timestamp');

        $this->belongsTo('Contract', [
            'className' => 'Tranquillity.Contract',
            'foreignKey' => 'cleaffaires',
            'bindingKey' => 'cleaffaire'
        ]);
    }

    /**
     * Default validation rules.
     *
     * @param \Pilotage\Validation\Validator $validator Validator instance.
     * @return \Pilotage\Validation\Validator
     */
    public function validationDefault(Validator $validator)
    {
        $validator
            ->add('id', 'valid', ['rule' => 'numeric'])
            ->allowEmpty('id', 'create');
            
        $validator
            ->add('id_field', 'valid', ['rule' => 'numeric'])
            ->requirePresence('id_field', 'create')
            ->notEmpty('id_field');
            
        $validator
            ->add('cleaffaire', 'valid', ['rule' => 'numeric'])
            ->requirePresence('cleaffaire', 'create')
            ->notEmpty('cleaffaire');
            
        $validator
            ->allowEmpty('value');

        return $validator;
    }
}



Controller

$oContract =
    $this->Contract
            ->find('withClient')
            ->where(['cleaffaires' => $this->request->data('cleaffaire')])
            ->first();
$oContract->meta_values <======== EMPTY
OR 

$oContracts =
    $this->Contract
            ->find('withClient')
            ->where(['cleaffaires' => $this->request->data('cleaffaire')]);

foreach($oContracts as $oContract){
     $oContract->meta_values <======== EMPTY
}



My problem is that all my hasMany properties are empty. I saw the query 
being created in but the results are NEVER populated.

What am I doing wrong ? or how do I get my data ?


Thanks,
Bogdan.

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cake-php+unsubscr...@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at https://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to