PDA

View Full Version : سوال : آیا ارتباط با دیتابیس در view غیر استاندارد است؟



barname_newis
جمعه 19 اردیبهشت 1393, 18:48 عصر
سلام
میخواستم بدونم آیا ارتباط با بانک اطلاعاتی در فایل view در فریم ورک yii غیر استاندارد است؟
اگه غیر استاندارد است برای قسمت نمایش پست های سایت که باید اطلاعات هر پست رو از چندین جدول (مثل جدول posts ، category ، likes و ...) بخونه باید چیکار کنیم؟ برای مثال هر پست علاوه بر بدنه پست میتونه category هم داشته باشه
تو پروژه های معمولی که بدون معماری mvc نوشته میشد خیلی راحت میتونستیم تمام پست ها رو از بانک بگیریم و در foreach بزاریم و هربار که حلقه تکرار میشه با استفاده از کلید خارجی ، category رو هم از جدول categories بگیریم .
من دقیقا میخوام همین کار رو انجام بدم امیدوارم متوجه منظورم شده باشید
منتظر پاسختون هستم

MMSHFE
شنبه 20 اردیبهشت 1393, 14:03 عصر
نیازی نیست توی ویو اینکار رو انجام بدین. با استفاده از relationها میشه به راحتی انجام داد. برای مثال این relationها رو ببینید که مربوط به مدل Posts هست:

return array(
'category' => array(self::BELONGS_TO, 'Categories', 'category_id'),
'comments' => array(self::HAS_MANY, 'Comments', 'post_id'),
);
حالا توی کنترلر و اکشن posts/index ببینید چطور ویو رو صدا میزنیم:

$this->render('index', array('posts'=>Posts::model()->findAll('confirmed=1')));
و توی ویو ببینید چطور از relationها استفاده میکنیم:

<div id="posts">
<?php foreach($posts as $post) : ?>
<div id="post<?php echo $post->id; ?>">
<p class="title"><?php echo $post->title; ?></p>
<p class="category">Category: <?php echo $post->category->title; ?></p>
<div class="comments">
<?php foreach($post->comments as $comment) : ?>
<div id="comment<?php echo $comment->id; ?>">
<p><?php echo $comment->text; ?></p>
<p class="info">Wrote by: <?php echo $comment->author->name; ?> at <?php echo date('Y/m/d - H:i:s', $comment->ts); ?></p>
</div>
<?php endforeach; ?>
</div>
</div>
<?php endforeach; ?>
</div>