yii2 : bekomme keine Daten aus zwei Tabellen mit aktiven Datensatz

Ich möchte Daten aus zwei Tabellen comments,users.
comments haben hasOne Zusammenhang mit users

public function getUser()
    {
        return $this->hasOne(Users::className(), ['user_id' => 'user_id']);
    }

möchte ich bekommen comments.comment_id,comments.comment_content,comments.user_id aus comments Tisch und uses.user_name , users.user_display_name aus users Tabelle zu verwenden, in gridview widget.

benutze ich

$res = Comments::find()
            ->select([
                'comments.comment_id',
                'comments.comment_content',
                'comments.user_id',
                'users.user_id',
                'users.user_display_name',
                'users.user_name',
            ])
            ->innerJoinWith('user')
            ->all();

diesem code bekommen comments Feld, aber ich kann nicht users.user_name,users.user_display_name aus der Datenbank.

Wie soll ich es tun?

Hinweis: in der Tabelle user in der Datenbank ist users aber wenn ich das Modell erstellen mit Gii,Verhältnis-Methode erklären, wie getUser() ich weiß nicht, warum.

update 1:

comments Tabelle:

DROP TABLE IF EXISTS `comments`;
CREATE TABLE `comments` (
  `comment_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `comment_content` text NOT NULL,
  `comment_approved` enum('no','yes') NOT NULL DEFAULT 'no',
  `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `comment_parent` bigint(20) unsigned NOT NULL DEFAULT '0',
  `sms_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  `user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`comment_id`),
  KEY `fk_comment_sms_id` (`sms_id`),
  KEY `fk_commetn_user_id` (`user_id`),
  CONSTRAINT `fk_comment_sms_id` FOREIGN KEY (`sms_id`) REFERENCES `sms` (`sms_id`),
  CONSTRAINT `fk_commetn_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

users Tabelle:

CREATE TABLE `users` (
  `user_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_name` varchar(60) NOT NULL DEFAULT '',
  `user_pass` varchar(64) NOT NULL DEFAULT '',
  `user_level` int(11) NOT NULL DEFAULT '1',
  `user_email` varchar(100) NOT NULL DEFAULT '',
  `user_display_name` varchar(250) NOT NULL DEFAULT '',
  `user_phone_number` varchar(11) NOT NULL,
  `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `user_activation_key` varchar(60) NOT NULL,
  `user_status` enum('active','deactive','delete') NOT NULL DEFAULT 'deactive',
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `u_user_sign` (`user_name`) USING BTREE,
  UNIQUE KEY `u_user_email` (`user_email`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
Wie verwenden Sie $res zum anzeigen von Daten?
$res ist das model-Objekt(glaube ich) und ich benutze foreach($res as $comment), dann bekommen Wert mit dem Feldnamen wie : $comment->comment_content. widget automatisch verwendet.
Tun Sie alles mit $comment->user->user_name
ja :), ty @Alex.es ist Arbeit

InformationsquelleAutor 123 | 2014-11-05

Schreibe einen Kommentar