Comment convertir un tableau d'objets de données de modèle en dataProvider
Supposons que j'ai le modèle User
qui ont beaucoup de beaucoup de relation avec lui-même nommé comme friends
.
donc $user->friends
(ou $model->friends
en vue) me donne un tableau de User
objets. Je voulais afficher les amis gridview. Mais CGridView
données dataProvider
objet. Googler il a trouvé le moyen de convertir le tableau des objets de modèle à dataProvider
objet comme indiqué ci-dessous.
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'gridUser',
'dataProvider' => new CArrayDataProvider($model->friends, array()),
));
Maintenant ce que j'obtiens une erreur
Propriété "De L'Utilisateur.id" n'est pas défini.
Mise à JOUR
public function relations()
{
return array(
'friends' => array(self::MANY_MANY, 'User', 'friendship(user_id, friend_id)'),
);
}
source d'informationauteur prashu132
Vous devez vous connecter pour publier un commentaire.
- Je utiliser les deux bâtiment de scène du fournisseur indiqué ci-dessous. Mais j'ai trouvé qu'il vous donne des soucis au niveau de la Pagination. Je n'ai pas pris la peine de résoudre ce problème depuis que suis en train de faire d'autres choses
Cela étant dit, votre code doit fonctionner (voir l'exemple ci-dessous à partir de l'API docs). Je pense qu'il y est de mal attribut dans vos relations que le code fourni. Re-vérifier la relation de définition si c'est ok
De Yii docs:
Eu 🙂 , je peux utiliser
CActiveDataProvider
au lieu deCArrayDataProvider
comme indiqué ci-dessousDe toute façon merci pour la réponse @Stefano