嗨,大家好问题,
在尝试获取应用程序的噩梦后,我使用Visual Studio 2010编写,使用ODBC MySQL Connector 3.51连接到我的本地MySQL数据库.我决定尝试原生的.Net MySQL提供程序......
using MySql.Data.MySqlClient
Run Code Online (Sandbox Code Playgroud)
代替
using System.Data.Odbc
Run Code Online (Sandbox Code Playgroud)
使用MySqlClient我已经能够让我的应用程序正常工作,连接到服务器甚至进行选择last_insert_id()- 当我尝试使用ODBC时我遇到了问题 - 我注意到它有点滑稽数据阅读器,似乎你需要在每次完成阅读时关闭它或者它什么都不做.
我只是在寻找一些建议来确定使用这两种方法连接到MySql之间究竟有什么区别(我知道使用ODBC驱动程序方法,你必须确保客户端机器安装了ODBC驱动程序的副本但不要'知道其他方法)
我正在尝试将以下查询转换为数据提供程序,以便它可以显示在 CGridView 中。我曾尝试使用 CArrayDataProvider,但到目前为止还没有任何运气,任何帮助将不胜感激!
这是查询
public function getTeamsByLevelIdAndCompetitionId($levelId, $competitionId)
{
$query = "SELECT t.*,
(SELECT COUNT(*)
FROM tbl_competition_teams ct
WHERE ct.team = t.id
AND ct.competition = :competitionId) AS 'inCompetition'
FROM tbl_teams t
WHERE t.level = :levelId";
$params = array(
'levelId' => $levelId,
'competitionId' => $competitionId
);
$result = array();
$teams = $this->findAllBySQL($query, $params);
return $teams;
}
Run Code Online (Sandbox Code Playgroud)
这就是我尝试将其放入 CArrayDataProvider 的方式:
public function getTeamsByLevelIdAndCompetitionId($levelId, $competitionId)
{
$rawData = Yii::app()->db->createCommand("SELECT t.*,
(SELECT COUNT(*)
FROM tbl_competition_teams ct
WHERE ct.team = t.id
AND ct.competition = …Run Code Online (Sandbox Code Playgroud) 当 GridView 中有 2 个模型并且在一行中插入了来自第二个模型的 1 个以上的记录时,我遇到了分页问题。
DataProvider 看起来像:
$query = Risks::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => array('pageSize' => 5),
]);
$query->joinWith(['solutions']);
Run Code Online (Sandbox Code Playgroud)
Ins第二个模型我有功能:
public function getSolutionValues (){
......
$content ='';
foreach ($order as $o){
$model = Solutions::findOne($o);
$content.= '<p>'.Html::encode($model->solution).'</p>';
}
return $content;
}
Run Code Online (Sandbox Code Playgroud)
在 GridView 我调用这个函数:
[
'attribute' => 'solutions',
'format' => 'raw',
'value' => function ($model) {
return $model->getSolutionValues();
},
],
Run Code Online (Sandbox Code Playgroud)
例如,这里只有前 3 条记录(而不是 5 条)可见,因为第一行插入了来自不同模型的 3 个条目。(如果插入一个解决方案,那么一切都可以)

如果我从列表中删除一个解决方案,分页不会改变,我必须从数据库中删除解决方案,然后只有分页不计入该条目。
我正在尝试从两个不同的模型创建联合,id, body当发送dataProvider到GridView:时,两个模型在错误下方具有相同的列
SQLSTATE[07002]: [Microsoft][ODBC Driver 11 for SQL Server]COUNT field incorrect or syntax error
The SQL being executed was: SELECT COUNT(*) FROM ((SELECT [id], [body] FROM [web_article] WHERE body LIKE '%a%') UNION ( SELECT [id], [body] FROM [email_article] WHERE body LIKE '%a%' )) [c]
我复制了sql查询,然后运行它MSSQL Server,它返回结果!
在控制器代码下面:
$model = new DynamicModel([
'text', 'type'
]);
$model->addRule(['text'], 'required')
->addRule('text', 'string');
$emailArticle = EmailArticle::find()->select('id, body')->where('body LIKE :query')->addParams([':query'=>"%{$model->text}%"]);
$webArticle = WebArticle::find()->select('id, body')->where('body LIKE :query')->addParams([':query'=>"%{$model->text}%"]); …Run Code Online (Sandbox Code Playgroud) 我不想修改我的machine.config,但我想使用Npgsql库作为数据提供程序.我将我的应用程序部署到多个平台(包括单声道),所以我真的希望"正常工作"而不是给我错误"无法找到所请求的.Net Framework数据提供程序".
有没有办法在运行时"注册"Npgsql作为数据提供程序,所以这不会发生?
我应该澄清Npgsql在大多数情况下没有在我的machine.config中工作正常,但是有一些它不能很好地工作(比如NLog--我沮丧的当前来源).
我是GWT应用程序开发的初学者.我在线搜索过CellTable.除了一些例子之外没有任何解释.
现在我真的想知道DataProvider在CellTable中究竟做了什么?还想了解更多关于celltable的信息,以及是否有相同的资源?
我想仅在今天的日期显示数据提供者中的数据.$ data-> timedate是约会日期.如果它等于当前日期,则显示它.以下代码不起作用.
//today appointments dataprovider
$taProvider=new CActiveDataProvider('Appointments',array(
'sort'=>array(
'defaultOrder'=>'datetime ASC',
),
'criteria'=>array(
'condition'=>'cId=:cId',
'params'=>array(':cId'=>Yii::app()->user->id),
'condition'=>$data->timedate = date('Y-m-d'),
),
));
Run Code Online (Sandbox Code Playgroud) dataprovider ×7
c# ×2
gridview ×2
mysql ×2
yii ×2
yii2 ×2
asp.net ×1
celltable ×1
criteria ×1
gwt ×1
npgsql ×1
pagination ×1
php ×1
postgresql ×1
sql-server ×1
union ×1