在多个表上创建查询yii

时间:2014-02-17 20:45:58

标签: php yii

Yii中的等效代码是什么?

while($row = mysql_fetch_assoc)
{
echo $row['id']." ".getSkillById($row['skillId']);
}  

function getSkillById($id)  
{
$sql = mysql_query("select * from `skills` WHERE id = '$id'");
$res = mysql_fetch_assoc($sql);
return $res['skill_label'];
}

如何在yii中实现某些内容?
这是标准程序吗?

1 个答案:

答案 0 :(得分:2)

ActiveRecord approche:

首先,使用GII创建模型。例如,您的模型名称为:Skill。现在:

$skills=Skill::findAll();
if(!is_null($skills)){
   foreach($skiils as $skill){
        echo $skill->id;
   }
}

通过ID获得技能:

$skill=Skill::findByPk($id);
$skill->id; // Gets the skill ID

哇,你不知道Yii的AR支持Relations吗?假设您有一个User表,每个用户都有一个技能ID。因此,您必须创建User模型。然后在您的用户模型的relation()方法中,您必须写:

array('skill'=>array(self::HAS_ONE,'Skill','skill_id'));

以上都基于假设。 (因为您的问题很小)。现在,您可以通过以下方式访问您的用户及其技能:

$users=User::findAll();
if(!is_null($users)){
   foreach($users as $user){
        echo $user->id; // USER IS
        echo $user->skill->id; // USER SKILL ID
   }
}

另一种方法是使用Yii's query builder,如下所示:

$db=Yii::app()->db;
$skills=$db->createCommand('SELECT * FROM tbl_skills')->queryAll();
// A LOOP
// foreach($skills as $skill) -> now the result is an associate array.

作为建议,请先仔细阅读Yii的ORMAR)和Yii的Query Builder。找到有用信息的最佳地点是Yii的官方文件:

Active Record

Query Builder