您可以使用findBy()
或findAllBy()
檢索基於ID以外的記錄。如果您需要提供的條件與查詢,使用常規find()
:
$this->Car->find(
'all',
array(
'conditions' => array(
'CarMake.Slug' => $slug,
'Car.Name LIKE' => $name
),
)
);
此外,對於URL你想設置,你需要創建一個route爲/cars
:
Router::connect(
'/cars/:make',
array('controller' => 'cars', 'action' => 'bymake'),
array(
'pass' => array('make'),
'make' => '[A-Za-z]+'
)
);
編輯:
上述工作,如果您的條件是基於您的模型的直接關聯。如果你的條件是一個遞歸關聯(即小車 - > CarModel-> CarMake),你需要使用明確連接:
$result = $this->Car->find('all', array(
'joins' => array(
array(
'table' => 'car_models',
'type' => 'inner',
'foreignKey' => false,
'conditions' => array('car_models.id = Car.car_model_id')
),
array(
'table' => 'car_makes',
'type' => 'inner',
'foreignKey' => false,
'conditions' => array(
'car_makes.id = car_models.car_make_id',
'car_makes.slug' => $slug
)
)
),
'conditions' => array(
'Car.name LIKE' => $name
)
));
感謝這麼多的去努力編寫出了我,我會放棄一下。 – KieranYo
我昨晚給了這個,我看到它現在正在做什麼,但我得到這個SQL錯誤: 'SQL錯誤:1054:未知列'CarMake.Slug'在'where子句'[CORE/cake/libs /model/datasources/dbo_source.php,第684行] – KieranYo
您是否在模型中定義了Car和CarMake之間的關聯? –