你现在的位置:首页 > PHP网站建设知识库 > Yii > 正文

Yii函数使用:findAll , findByAttributes和deleteAllByAttributes

findAll() 方法

public array findAll(mixed $condition='', array $params=array ( ))

$condition mixed 查询条件或标准。
$params array 要绑定到的 SQL 语句的参数。
{return} array 满足指定条件的活动记录列表,如果没有找到将返回一个空的数组。

源码: framework/db/ar/CActiveRecord.php#1402

public function findAll($condition='',$params=array())
{
    Yii::trace(get_class($this).'.findAll()','system.db.ar.CActiveRecord');
    $criteria=$this->getCommandBuilder()->createCriteria($condition,$params);
    return $this->query($criteria,true);
}

查找满足指定条件的所有活动记录。参见find()详细说明关于$condition和$params。

可以看出第一个参数并不是必须的,此时可以直接传递进去一个CDbCriteria或array('id' => 'your value');即可

findByAttributes() 方法

public CActiveRecord findByAttributes(array $attributes, mixed $condition='', array $params=array ( ))

$attributes array 列表中的属性值(属性名索引)活动记录相匹配。属性值可以是一个数组将被用来生成一个条件。
$condition mixed 查询条件(即SQL语句)或标准(即CDbCriteria)。
$params array 要绑定到的 SQL 语句的参数。(只有在第二个参数是SQL语句的形式的时候才会用到这个参数)
{return} CActiveRecord 找到的记录。如果没找到任何记录,则为 null。

源码: framework/db/ar/CActiveRecord.php#1450

public function findByAttributes($attributes,$condition='',$params=array())
{
    Yii::trace(get_class($this).'.findByAttributes()','system.db.ar.CActiveRecord');
    $prefix=$this->getTableAlias(true).'.';
    $criteria=$this->getCommandBuilder()->createColumnCriteria($this->getTableSchema(),$attributes,$condition,$params,$prefix);
    return $this->query($criteria);
}

查找具有指定属性值的单个活动记录。参见find()详细说明关于$condition和$params。

可以看出第一个参数是必须的

1. 此时必须传入一个有关属性的array,如:array('id' => 'your value');第二个参数可以是CDbCriteria等

2. 也可以给第一个参数传入一个空的数组,如:array(); 然后在第二个参数中包含必要的条件

deleteAllByAttributes()方法

public integer deleteAllByAttributes(array $attributes, mixed $condition='', array $params=array ( ))

$attributes array 列表中的属性值(属性名索引)活动记录相匹配。属性值可以是一个数组,用于生成的条件。
$condition mixed 查询条件或标准。
$params array 要绑定到的 SQL 语句的参数
{return} integer 执行影响的行数。

源码: framework/db/ar/CActiveRecord.php#1763

public function deleteAllByAttributes($attributes,$condition='',$params=array())
{
    Yii::trace(get_class($this).'.deleteAllByAttributes()','system.db.ar.CActiveRecord');
    $builder=$this->getCommandBuilder();
    $table=$this->getTableSchema();
    $criteria=$builder->createColumnCriteria($table,$attributes,$condition,$params);
    $command=$builder->createDeleteCommand($table,$criteria);
    return $command->execute();
}

删除指定的属性值相匹配的行。参见find()详细说明关于$condition和$params。

这个和findByAttributes的用法一样