我在蛋糕一個很深的關聯關係:CakePHP的 - 最有效的深層檢查
User
---- Garage
---- ---- Vehicle
---- ---- ---- VehicleAlbum
什麼是檢查是否VehicleAlbum屬於用戶的最佳方法是什麼? 因爲做一個遞歸3是非常昂貴的。我研究過包含,這是最好的解決方案嗎?
謝謝,喬希。
我在蛋糕一個很深的關聯關係:CakePHP的 - 最有效的深層檢查
User
---- Garage
---- ---- Vehicle
---- ---- ---- VehicleAlbum
什麼是檢查是否VehicleAlbum屬於用戶的最佳方法是什麼? 因爲做一個遞歸3是非常昂貴的。我研究過包含,這是最好的解決方案嗎?
謝謝,喬希。
沒有遞歸3(see book)這樣的東西。
你也不能使用Containable來限制你的查找結果基於兒童條件(see reasoning)。
我想你會想這樣做(與車庫開始減少一個查詢所需的,因爲它的用戶ID作爲一個字段):如果
$this->Garage->find('all', array(
'conditions' => array(
'Garage.user_id' => $userId
),
'joins' => array(
array(
'table' => 'vehicles',
'alias' => 'Vehicle',
'type' => 'inner',
'conditions' => array(
'Vehicle.garage_id = Garage.id'
)
),
array(
'table' => 'vehicle_albums',
'alias' => 'VehicleAlbum',
'type' => 'inner',
'conditions' => array(
'VehicleAlbum.vehicle_id = Vehicle.id',
'VehicleAlbum.id' => $vehicleAlbumId
)
)
)
));
應該返回的結果(S)它是所有者,如果不是,則爲空。
不,它不會很昂貴,除非你做出錯誤的查詢。那麼寫一個查詢並加入所有四個表並運行解釋...然後檢查它是昂貴的還是便宜的。你的情況還有一件事,如果這些表如上所示連接,那麼你必須爲連接查詢付費,除了改變表之間的關係之外,沒有別的出路。