Aug
13

Tự động xóa record ở bảng con khi reocord ở bảng cha bị xóa

Author admin    Category Chia sẻ, Kinh nghiệm     Tags

Giả sử bạn cần quản lý danh sách tỉnh/tp và danh sách quận/huyện. Mối quan hệ ở đây là 1 tỉnh/tp có thể có nhiều quận/huyện.

Bây giờ bạn muốn rằng khi xóa 1 tỉnh/tp nào đó thì các quận/huyện thuộc tỉnh/tp đó cũng phải bị xóa theo (để tránh tình trạng “mồ côi”). Thông thường, sau khi xóa xong tỉnh/tp, ta truy vấn xóa các quận/huyện thuộc tỉnh/tp vừa bị xóa. Tuy nhiên, CakePHP đã hỗ trợ tính năng này trong khi thiết lập quan hệ cho các Model.

Cụ thể, trong model City ta thiết lập quan hệ $hasMany cho model Ward

var $hasMany = array(
		'Ward' =>
    	array('className' => 'Ward',
                         'conditions'    => '',
                         'order'         => '',
                         'limit'         => '',
                         'foreignKey'    => 'city_id',
                         'dependent'     => true,
                         'exclusive'     => false,
                         'finderQuery'   => '',
                         'fields'        => '',
                         'offset'        => '',
                         'counterQuery'  => ''
			)
	);

Bạn chú ý

'dependent'     => true,

Như vậy, khi ta xóa một tỉnh/tp nào đó bằng lệnh

$this->City->delete($city_id)

thì toàn bộ quận/huyện liên quan cũng bị xóa theo!

Post comment

Follow us on Twitter! Follow us on Twitter!
Diễn đàn CakePHP cho người Việt Nam

Bài viết mới

Thảo luận mới

TAG

Calendar

August 2010
M T W T F S S
« Jul   Sep »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Lưu trữ

Blogroll

Thống kê

Danh sách: 4 khách, 1 Bot