Это должно делать то, что вам нужно.Он будет проверять количество событий перед удалением места, затем, если количество больше 0, он вернет false, предотвращая удаление.Иначе, он будет удален, если нет связанных событий.
// using app/models/venue.php
// In the following example, do not let a venue delete if it still contains events.
// A call of $this->Venue->delete($id) from VenueController.php has set $this->id .
// Assuming 'Venue hasMany Event', we can access $this->Event in the model.
function beforeDelete(){
$count = $this->Event->find("count", array("conditions" => array("venue_id" => $this->id)));
if ($count == 0) {
return true;
} else {
return false;
}
}
Или вы можете сделать это:
В вашей модели добавьте этот метод
function hasEvents($venue_id){
$count = $this->Event->find("count", array("conditions" => array("venue_id" => $venue_id)));
if ($count == 0) {
return false;
} else {
return true;
}
}
В вашем контроллере
if($this->Venue->hasEvents($venue_id)){
//display error message that you cannot delete because venue has events
} else {
$this->Venue->delete($venue_id);
}