2016-03-25 27 views
0

2 tabloya katıldım, şimdi alandaki kategorilerin ismini göstermek istiyorum <th>Categories name</th>. Bunu <?php foreach ($posts as $post){ ?> ile nasıl yapabilirim? <?=$post->categories.name?> gibi render ediyorum? Burada sıkıştım.Yii2 ekran görüntülendikten sonra

Teşekkür ederiz.

Benim denetleyicisi:

public function actionIndex() 
{ 

    $query = posts::find()->leftJoin('categories', 'posts.cate_id = categories.id'); 
    $cates = Categories::find()->all(); 
    $posts= $query->orderBy(['create_date' => SORT_DESC])->all(); 
    $images = Images::find()->all(); 
    $searchModel = new PostsSearch(); 
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

    return $this->render('index', [ 
     'posts' => $posts, 
     'dataProvider' => $dataProvider, 
      'searchModel' => $searchModel, 
      'cates' => $cates, 
      'images' => $images, 
    ]); 
} 

Bence:

<thead> 
<tr> 
    <th>ID</th> 
    <th>Name</th> 
    <th>Create Date</th> 
</thead> 
<tbody> 
<?php foreach ($posts as $post){ ?> 
<tr> 
    <td><?= $post->id ?></td> 

    <th><?= Html::a($post->name, ['post/view', 'id'=>$post->id]) ?></th> 

    <td><?= $post->create_date ?></td> 

    </tr> 
    <?php } ?> 
    </tbody> 

cevap

0

Döngü kategoriler arasında sadece mesajların olduğu gibi. Aynı prensip. Bu, modeldeki doğru ilişkileri tanımladığınız varsayımına dayanmaktadır. Bu, modeldeki doğru ilişkileri tanımladığınız varsayımlara dayanmaktadır.

I.I.I.e. yabancı anahtarla:
public function getCategories() 
{ 
    return $this->hasMany(Category::className(), ['post_id' => 'id']); 
} 

Diğer yöne benziyor gibi görünüyorsunuz. Gönderide category_id olabilir, ancak bir kategoriyle sınırlı olabilir. Eğer kimlikleri alanı bir sınır ile ayırarak depolarsanız. Ancak bu seçenek biraz daha fazla çalışma gerektirir.