Mysql 联接表和显示
我正在使用Yii-PHP框架,试图显示来自两个表的user\u-comment和user\u-reply,这两个表都有一个名为comment\u-id的列 这是注释表Mysql 联接表和显示,mysql,listview,yii2,Mysql,Listview,Yii2,我正在使用Yii-PHP框架,试图显示来自两个表的user\u-comment和user\u-reply,这两个表都有一个名为comment\u-id的列 这是注释表 CREATE TABLE `comment` ( `comment_id` int(11) NOT NULL, `byy` varchar(30) NOT NULL, `user_comment` varchar(900) NOT NULL, `topic_id` varchar(30) NOT NULL, `
CREATE TABLE `comment` (
`comment_id` int(11) NOT NULL,
`byy` varchar(30) NOT NULL,
`user_comment` varchar(900) NOT NULL,
`topic_id` varchar(30) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`up` bigint(11) NOT NULL,
`down` bigint(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
这是回复表
CREATE TABLE `reply` (
`reply_id` int(11) NOT NULL,
`comment_id` int(19) NOT NULL,
`byy` varchar(29) NOT NULL,
`user_reply` varchar(29) NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`up` varchar(29) NOT NULL,
`down` varchar(29) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我想以列表视图格式显示user_comment和user_reply,并根据comment_id进行排序。我对此有问题
<?php
$querys = new Query;
$querys->select([
'comment.user_comment',
'reply.user_reply']
)
->from('comment')
->join('LEFT OUTER JOIN', 'reply',
'reply.comment_id =comment.comment_id') ;
$command = $querys->createCommand();
$data = $command->queryAll();
$queryd = new Query;
$queryd->select([
'comment.user_comment',
'reply.user_reply']
)
->from('comment')
->join('LEFT OUTER JOIN', 'reply',
'reply.comment_id =comment.comment_id')
->LIMIT(5);
$command = $queryd->createCommand();
$data = $command->queryAll();
foreach ($data as $detail) {
$dataArr[] = array(
'user_reply' => $detail['user_reply']
);
}
$dataProvider = new ArrayDataProvider([
'allModels' => $dataArr,
'pagination' => [
'pageSize' => 10,
],
'sort' => [
'attributes' => ['comment_created_at'],
],
]);
echo ListView::widget([
'dataProvider' => $dataProvider,
'itemOptions' => ['class' => 'comment-item'],
'itemView' => 'adapter',
]);
?>
适配器类
<?php
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
//var_dump($model);exit;
?>
<div class="col-lg-12 col-sm-12">
<section>
<?php echo $model['user_reply']; ?>
</section>
</div>
我得到这个错误:
获取未知属性:未定义索引:用户\u回复
我做错了什么?试试看
foreach ($data as $detail) {
$dataArr[] = array(
'user_reply' => $detail['reply.user_reply']
);
}
或者使用别名
$queryd = new Query;
$queryd->select('comment.user_comment as user_comment,
reply.user_reply as user_reply')
->from('comment')
->join('LEFT OUTER JOIN', 'reply',
'reply.comment_id =comment.comment_id')
->LIMIT(5);
$command = $queryd->createCommand();
$data = $command->queryAll();
foreach ($data as $detail) {
$dataArr[] = array(
'user_reply' => $detail['user_reply']
);
}
对于dataProvider,您必须记住有一个模型集合
<div class="col-lg-12 col-sm-12">
<section>
<?php
foreach($models as $model){
//echo $model['user_reply'];
echo $model->user_reply;
}
?>
</section>
</div>
无法工作仍在获取未知属性:yii\db\Connection::user\u replyi更新了我的问题如何在适配器中显示i已更新数据提供程序的答案。。如果有用,请将我的答案评定为有用,如“获取语法错误,意外”),预期为“(“让我们看看对象的哪个类$detail
?仔细查看该类,该类中是否有user\u reply
属性?如果没有,请使用Gii生成器更新您的模型。