2016-01-04 2 views
0

Мои столыYii2: Как выбрать несколько полей из разных таблиц

Category 
id_category 
name 

Post 
id_post 
category_id 
title 

Мой запрос:

Post::find() 
->select('post.*, c.name AS catname') 
->leftJoin('category c', 'c.id_category = category_id') 
->all(); 

Выход только показал полей таблицы Post, не поле catname ,

+0

Показать код, связанный с запросом и выход пожалуйста – scaisEdge

+0

«Получение неизвестного свойства: app \ models \ Post :: catname» У меня есть «$ posts = Post :: find() ...», а ошибка находится в строке: «foreach ($ posts as $ post) { $ post-> catname; } – Giest

ответ

1

1) Определить соотношение в сообщении модели под названием «категория», так:

public function getCategory() { 
    return $this->hasOne(Category::className(), ['id_category' => 'category_id']); 
} 

2) Тогда при запросе сообщения, использовать «с», если вам нужно получить название категории для каждого поста:

$posts = Post::find() 
->with('category') 
->all(); 

3) Вы можете получить доступ к категории имени с:

$post->category->name 
Смежные вопросы