我正在尝试以CActiveDataProvider样式获取数据,以便将数据传递给相应视图中的CGridView。
我尝试通过以下方式使用CActiveData提供程序获取关系数据:
>
我有以下三个表:
创建表tbl_test_location
(locationid
int(11)NOT NULL AUTO_INCREMENT,locationname
varchar(255)DEFAULT NULL,主键(locationid
))engine=innoDB AUTO_INCREMENT=6 DEFAULT charset=utf8;
创建表tbl_test_user
(userid
int(11)NOT NULL AUTO_INCREMENT,username
varchar(255)DEFAULT NULL,PRIMARY KEY(userid
))engine=innoDB AUTO_INCREMENT=3 DEFAULT charset=utf8;
创建表tbl_test_location_user_assignment
(locationid
int(11)不为空,userid
),主键(locationid
),键fk_tlua_user
(userid
),约束fk_tlua_location
外键(locationid
)在删除级联时引用
模型中的关系是:
/models/testlocation.php
'tblTestUsers' => array(self::MANY_MANY, 'TestUser', '{{test_location_user_assignment}}(locationId, userId)'),
/models/testuser.php
'tblTestLocations' => array(self::MANY_MANY, 'TestLocation', '{{test_location_user_assignment}}(userId, locationId)'),
/Controllers/testLocationController.php
公共函数actionIndexOwn(){$dataprovider=new CActiveDataProvider(“testlocation”,array(“criteria”=>array(“with”=>array(“tbl testusers”=>array(“condition”=>“tbl_test_user.userid=1”,),),),));$this->render(“index”,array(“data provider”=>$dataprovider,));}
views/testlocation/index.php
<?php$this->小部件('zii.widgets.clistview',数组('data provider'=>$dataprovider,'item view'=>'_view',));?>
我有一个错误:
CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tbl_test_user.userId' in 'where clause'. The SQL statement executed was: SELECT COUNT(DISTINCT `t`.`locationId`) FROM `tbl_test_location` `t` LEFT OUTER JOIN `tbl_test_location_user_assignment` `tblTestUsers_tblTestUsers` ON (`t`.`locationId`=`tblTestUsers_tblTestUsers`.`locationId`) LEFT OUTER JOIN `tbl_test_user` `tblTestUsers` ON (`tblTestUsers`.`userId`=`tblTestUsers_tblTestUsers`.`userId`) WHERE (tbl_test_user.userId=1)
应用程序日志:
CDbCommand::fetchColumn() failed: SQLSTATE[42S22]: Column not found: 1054
Unknown column 'tbl_test_user.userId' in 'where clause'. The SQL statement
executed was: SELECT COUNT(DISTINCT `t`.`locationId`) FROM
`tbl_test_location` `t` LEFT OUTER JOIN
`tbl_test_location_user_assignment` `tblTestUsers_tblTestUsers` ON
(`t`.`locationId`=`tblTestUsers_tblTestUsers`.`locationId`) LEFT OUTER JOIN
`tbl_test_user` `tblTestUsers` ON
(`tblTestUsers`.`userId`=`tblTestUsers_tblTestUsers`.`userId`) WHERE
(tbl_test_user.userId=1).
in C:\htdocs\RackDomain\protected\views\testLocation\index.php (20)
in C:\htdocs\RackDomain\protected\controllers\TestLocationController.php
(147)
有人能帮助我吗?我尝试了很多方法来编写关系型的CActiveDataProvider,但我总是得到同样的错误...
非常感谢你的帮助!
如果要使用关系数据字段,只需将关系名与字段名一起使用即可。
$dataProvider=new CActiveDataProvider('TblTestLocation', array(
'criteria'=>array(
'with'=>array(
'tblTestUsers'=>array(
'condition'=>'tblTestUsers.userId=1',
),
),
),
));
这里的“TblTestUsers”是在模型类中定义的关系的名称。
正如您可以在错误中看到,Yii在其sql查询中对表名使用别名。所以你也应该用这个别名。更重要的是,在``
中添加表名、列名和别名不容易出错。
您的代码应该如下所示:
public function actionIndexOwn()
{
$dataProvider=new CActiveDataProvider('TestLocation', array(
'criteria'=>array(
'with'=>array(
'tblTestUsers'=>array(
'condition'=>'`tblTestUsers`.`userId`=1',
),
),
),
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
我正在尝试使用PDO向MySQL插入一条记录,下面的代码中可以看到我的sql语句。 当执行此代码时,我会遇到以下错误消息; SQLState[42S22]:找不到列:1054“Field List”中的未知列“John” 这无疑是解决这个问题的一个简单方法,但我似乎看不出来,有人能给我指明正确的方向吗?
我使用的框架Laravel。 我有两个表(用户和成员)。当我想登录时,我会收到错误消息: SQLSTATE[42S22]:找不到列: 1054未知的列'user_email'in'where子句'(SQL:选择*fromwhere=?限制1)(绑定:数组(0= 表用户 表成员 迁移用户 移民成员 模型用户 模范会员 成员模型使用:使用照明\Auth\UserInterface; 控制器 auth.
我是编程界的新手,我自己在学习laravel,我发现了这个错误:SQLSTATE[42S22]:Column not found:1054未知列'clientes.clientes\u id'在'where子句中(SQL:select*fromwhere=1和不为空)(视图:/shared/httpd/laravel_8_crud/resources/views/pedidos/index.bla
问题内容: 我正在使用Laravel框架。 我有2个表(用户和成员)。当我想登录时,收到错误消息: SQLSTATE [42S22]:找不到列:1054’where子句’中的未知列’user_email’(SQL:select * from where =?limit 1)(绑定:数组(0 =>'test@hotmail.com‘,)) 表用户 表成员 迁移用户 移民会员 模型使用者 模范会员 成
此函数有问题。它应该返回使用下面的sql调用收集的数据的json字符串。问题是,当通过服务器访问页面时(例如-localhost/app/API/states/Alabama/1/10.json),我得到一个错误代码“500”。奇怪的是,数据在使用.json和不使用appending.json的情况下按预期显示。据我所知,控制器和模型设置得很好,但错误代码仍然存在: {“code”:500,“ur
SQLSTATE[42S22]:找不到列: 1054未知列'products.wishlist_id'in'where子句'(SQL:选择*fromwhere.=1 and>.不是null和.是null)