View Full Version : رابطهی بین پست و تگ
mah.tab
شنبه 03 خرداد 1393, 13:13 عصر
تو دمو بلاگ فریم ورک، هیچ رابطهای (کلید خارجی ) بین پست و تگ نیست، پس با چه روشی از روی تگا میفهمیم در چه پستهایی استفاده شدند؟
CREATE TABLE tbl_post( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(128) NOT NULL, content TEXT NOT NULL, tags TEXT, status INTEGER NOT NULL, create_time INTEGER, update_time INTEGER, author_id INTEGER NOT NULL, CONSTRAINT FK_post_author FOREIGN KEY (author_id) REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE tbl_tag( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(128) NOT NULL, frequency INTEGER DEFAULT 1) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
MRmoon
شنبه 03 خرداد 1393, 14:19 عصر
خوب اگه تو مدل هاشون رو نگاه کرده باشین از سرچ با لایک استفاده کرده.
MMSHFE
شنبه 03 خرداد 1393, 14:31 عصر
توی این سیستم، توی جدول پست یک فیلد tags داره که تگها رو داخل اون ذخیره میکنه و با کاما از هم جدا میشن. حالا این قسمت رو از اکشن index از کنترلر Post ببینید:
...
if(isset($_GET['tag']))
$criteria->addSearchCondition('tags',$_GET['tag']);
...
امیدوارم متوجه شده باشین.
mah.tab
شنبه 03 خرداد 1393, 16:12 عصر
یعنی اگه بخوایم کتگوری داشته باشیم واسه پست هم میشه اینطوری عمل کرد ؟
MRmoon
شنبه 03 خرداد 1393, 16:17 عصر
بله میشه .....
MMSHFE
شنبه 03 خرداد 1393, 16:17 عصر
بله میشه ولی منطقی نیست چون قاعده اینه که یک پست فقط یک دسته بندی داره و یک دسته بندی چند پست (رابطه 1 به n) و برای اینجور موارد بهتره از relationها استفاده کرد.
mah.tab
شنبه 03 خرداد 1393, 16:26 عصر
خیلی ممنونم از شما ٢ تا دوست عزیز این آیا درسته؟
# -----------------------------------------------------------------------------# table : post# -----------------------------------------------------------------------------
create table if not exists post ( id_post integer not null auto_increment, id_user integer not null , id_category integer not null , content text not null , tags TEXT, create_time integer not null , update_time integer not null , primary key (id_post) ) engine=innodb default charset=utf8 collate=utf8_unicode_ci;
# -----------------------------------------------------------------------------# table : category# -----------------------------------------------------------------------------
create table if not exists category ( id_category integer not null auto_increment, name_category varchar(128) not null, id_post integer not null , primary key (id_category) ) engine=innodb default charset=utf8 collate=utf8_unicode_ci;
create index i_fk_post_category on post (id_category asc);
alter table post add foreign key fk_post_category (id_category) references category (id_category) ;
MMSHFE
شنبه 03 خرداد 1393, 16:39 عصر
بله فکر میکنم ولی چرا اصرار به استفاده از SQLite دارین؟ منظورم اینه که چرا از MySQL استفاده نمیکنید؟
mah.tab
شنبه 03 خرداد 1393, 16:41 عصر
مای اس کیو ال هست
MMSHFE
شنبه 03 خرداد 1393, 16:48 عصر
خوب پس چرا اینقدر دردسر میکشین؟ چرا با phpMyAdmin طراحی نمیکنید؟
mah.tab
شنبه 03 خرداد 1393, 16:51 عصر
اول مدل رو طراحی کردم, و بعد کد رو از اون گرفتم,
برای کلید خارجی و ... دستی کد زدن راحت تره, البته شما استادین این نظر شخصیمه
MMSHFE
یک شنبه 04 خرداد 1393, 11:22 صبح
توی phpMyAdmin هم میشه با سربرگ Designer بصورت ویژوال ارتباطها رو طراحی کرد. نمای Relation View هم که دیگه مخصوص همین کارها درنظر گرفته شده (سربرگ Structure)
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.