我使用CakePHP 2.2.2 我有3個表格:餐廳,廚房和廚房餐廳 - HABTM連接表。CakePHP如何檢索具有條件的HABTM數據?
在餐廳模型,我有:
public $hasAndBelongsToMany = array(
'Kitchen' =>
array(
'className' => 'Kitchen',
'joinTable' => 'kitchens_restaurants',
'foreignKey' => 'restaurant_id',
'associationForeignKey' => 'kitchen_id',
'unique' => true,
'conditions' => '',
'fields' => 'kitchen',
'order' => '',
'limit' => '',
'offset' => '',
),
的問題是,我有在我需要用複雜的條件檢索該模型的數據我的主頁單獨的控制器。
我加
public $uses = array('Restaurant');
我的主要頁面控制器和這裏來,我需要你的建議的一部分。
我只需要選擇那些kitchen = $ id的餐廳。 我試着添加
public function index() {
$this->set('rests', $this->Restaurant->find('all', array(
'conditions' => array('Restaurant.active' => "1", 'Kitchen.id' => "1")
)));
}
和我SQLSTATE [42S22]:列未找到:在 'where子句' 錯誤1054未知列。 顯然我需要從「HABTM連接表」中獲取數據,但我不知道如何。
戴夫,謝謝。你的代碼工作得很好。一個小問題 - 是否可以只選擇我想要的字段(例如,我只需要公司名稱和其他信息,而不是所有字段)?我嘗試將'fields'=> array('Restaurant.companyname')添加到函數getRestaurantsByKitchenId(在Restaurants模型中),但它不會產生任何影響。 – user1327
@ user1327 - 很高興提供幫助。是的,您應該可以將'fields'=> array()添加到Model方法。只要把它放在與'連接'(不在)相同的水平。您始終可以使用DebugKit輕鬆查看正在運行的查詢,並可以基於此進行調整。 – Dave
哦,傻了。現在一切都按我想要的那樣工作。再一次 - 謝謝。 – user1327