Soy nueva en YII2 y tengo un problema con mis relaciones:

Tengo Usuarios y Categoría. Tienen una relación m-m. Ahora me gustaría ver las categorías que tiene un usuario. Para eso hice una tabla llamada "user_category" que se ve como sigue: ingrese la descripción de la imagen aquí

En mis modelos tengo el siguiente código como se sugiere en ¿Cómo trabajo con muchos a muchos? relaciones en Yii2:

public function getUsers(){
    return $this->hasMany(TabUser::className(), ['intUserID' => 'intUserID'])
        ->viaTable('user_category', ['intCategoryID' => 'intCategoryID']);
}
public function getCategories(){
    return $this->hasMany(TabCategory::className(), ['intCategoryID' => 'intCategoryID'])
        ->viaTable('user_category', ['intUserID' => 'intUserID']);
}

Luego las uní:

if($user->validate()) {
        $user->link('categories', $category);
    }

    var_dump($user->getCategories());

Pero esto no devuelve mis categorías, devuelve lo siguiente: ingrese la descripción de la imagen aquí

¿Alguien sabe lo que hago mal?

¡¡Gracias por tu tiempo y ayuda!!

-1
Noé Perracini 17 oct. 2018 a las 09:45

2 respuestas

La mejor respuesta

El método getCategories () devuelve un objeto ActiveQuery en lugar de modelos. Si necesita obtener una matriz de modelos de categorías, debe usar la propiedad mágica categories. Por ejemplo:

var_dump($user->categories);
0
Maksym Fedorov 17 oct. 2018 a las 06:55

Intente dividir su expresión de esta manera, debería funcionar:

$categories = $user->categories;
var_dump($categories);
1
Marat Badykov 17 oct. 2018 a las 06:59