我正在尝试将PHP语句更改为Yii2。这是原始代码:
$sql = "select id from users where member_type='d'";
$max = @mysql_num_rows($r=mysql_query($sql));
for($i=0;$i<$max;$i++){
$demo2=mysql_fetch_assoc($r);
some_functions($demo2['id'], 'something');
}
Run Code Online (Sandbox Code Playgroud)
我是Yii2框架的新手,并试图将其转换为Yii2,但不知道如何。我正在模态文件下执行此功能。
这是我最大的能力:
$max= Yii::$app->dbFxprimus->createCommand("select count(id) from ". $this->tableName() ." where member_type='d'")->queryAll();
for($i2=0;$i2<$max;$i2++){
$demo=mysql_fetch_assoc($max); //this is definitely wrong, help me to fix this, I don't know what is the Yii2 function for this.
some_function($demo['id'], 'something');
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题?
首先,您需要构建查询并获取结果。
1)如果您没有模型,可以这样做:
use yii\db\Query;
...
$users = (new Query())
->select('id')
->from('users')
->where(['member_type' => 'd'])
->all()
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用构建查询Yii::$app->db->createCommand(),但这看起来更好。
2)如果您有模型,并希望以关联数组的形式获取结果:
use app\models\User;
...
$users = User::find()
->select('id')
->where(['member_type' => 'd'])
->asArray()
->all();
Run Code Online (Sandbox Code Playgroud)
然后循环遍历并应用您的函数:
foreach ($users as $user) {
some_function($user['id'], 'something');
}
Run Code Online (Sandbox Code Playgroud)
而且您需要替换some_function调用某些方法类,因为它是OOP。
附注:请花点时间阅读文档。它被盖在那里。
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |