cakephp211 problemas de condiciones

¡Saludos! mis modelos no se configuran como contenedores. esta siguiente consulta no muestra el resultado correcto (quiero recuperar todos los autos disponibles entre dos fechas en todas las categorías)

$car=$this->Genre->find('all', array(
                            'contain' => array(
                                'cars'=>array(
                                    'conditions'=>array(
                                        'cars.startdate <=' => $qdu ,
                                        'cars.enddate >=' => $qau
                                    )
                                )
                            )
                        )
                    );

este es mi modelo de género:

class Genre extends AppModel {
       public $actsAs = array('Containable');

    public $belongsTo = array(
    'houses' => array(
        'className' => 'houses',
        'foreignKey' => 'houses_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

public $hasMany = array(
    'cars' => array(
        'className' => 'cars',
        'foreignKey' => 'genres_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    )
);

}

y este es el modelo de coche:

class Car extends AppModel {

    public $belongsTo = array(
    'Genres' => array(
        'className' => 'Genres',
        'foreignKey' => 'genres_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

public $hasMany = array(
    'ways' => array(
        'className' => 'ways',
        'foreignKey' => 'cars_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    )
);

}

preguntado el 03 de mayo de 12 a las 11:05

1 Respuestas

Los nombres de los modelos normalmente deben ser singulares, por lo que "Coche" en lugar de "coches".

$car=$this->Genre->find('all', array(
                            'contain' => array(
                                'Car'=>array(
                                    'conditions'=>array(
                                        'Car.startdate <=' => $qdu ,
                                        'Car.enddate >=' => $qau
                                    )
                                )
                            )
                        )
                    );

Además, asegúrese de que el modelo Genre cargue el comportamiento Containable.

class Genre extends AppModel {
   $actsAs = array('Containable');
}

Las asociaciones también deben usar nombres de modelos singulares y en mayúsculas:

class Genre extends AppModel {
  public $actsAs = array('Containable');

  public $belongsTo = array(
    'House' => array(
        'className' => 'House',
        'foreignKey' => 'houses_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
  );

  public $hasMany = array(
    'Car' => array(
        'className' => 'Car',
        'foreignKey' => 'genres_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    )
  );
}

Es una convención de Cake tener controladores pluralizados (CarsController, GenresController) y modelos singulares (Car, Genre). Al definir asociaciones, en esencia, está vinculando modelos y no controladores, de ahí la necesidad de nombres de clase singulares y en mayúsculas.

contestado el 04 de mayo de 12 a las 13:05

antes, recuperé todos los datos (no deseados también). Ahora, al hacerlo, tengo un error: Advertencia (512): el modelo "Género" no está asociado con el modelo "Coche" [CORE\Cake\Model\Behavior\ContainableBehavior.php, línea 339] - John

Eso significa que no hay una asociación configurada para el modelo Género. Probablemente quieras un hasMany La relación como Género puede tener múltiples Autos. Consulte el manual para obtener más información: book.cakephp.org/2.0/en/models/… - mensch

ok mensch gracias! pero configuré una relación hasmany con el modelo de género y tengo el mismo error: John

¿Podrías actualizar tu pregunta con el código del Género y modelo de Auto? - mensch

Actualicé mi respuesta con algunos consejos sobre asociaciones. - mensch

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.