提示: 下面是我项目中所写的方法, 里面所用到的数据有不一样的地方, 在这里只是作为事例来展示(Yii2.0 数据库的增删改查)
[插入操作]
方法一: 添加数据时, 使用单个依次进行插入的方式,代码如下:
public function test($uid, $company)
{
$this->uid = $uid;
$this->company_name = $company;
$result = $this->insert();
return $result;
}
方法二: 添加数据时,给出一个数组的形式,代码如下:
/**
* 添加圈子信息
*
* @param array $data (数组中的键名必须和数据表中的字段名一一对应)
* ~
* [
* 'name' => '名称',
* 'cover' => '封面URL', [可选]
* 'photo' => '圈子图片地址', [可选]
* 'desc' => '描述', [可选]
* 'privacy_setting' => '隐私设置',
* 'common_setting' => '公共配置', [可选]
* ]
* ~
* @return int|bool
*/
public function add($data)
{
$result = false;
if ($data && is_array($data)) {
foreach ($data as $key => $val) {
$this->$key = $val;
}
$this->status = self::STATUS_ENABLE;
$this->setScenario('create');
$result = $this->save() ? $this->id : false;
}
return $result;
}
[删除操作]
public function del($id)
{
$id = intval($id);
$result = false;
if ($id) {
$result = self::find()->where(['id' => $id])->one();
if ($result) {
$result = $result->delete(); //这里用到了delete()
}
}
return $result;
}
[更新操作]
/**
* 更新信息
*
* @param array $data (数组中的键名必须和数据表中保持一致)
* ~
* [
* 'id' => '值1',
* .....
* ]
* ~
* @return bool
*/
public function renew($data, $scenario = false)
{
$result = false;
if ($data && is_array($data)) {
if (isset($data['id']) && intval($data['id'])) {
//先根据Id获取一条需要修改的信息
$result = self::find()->where(['id' => $data['id']])->one();
unset($data['id']);
if ($result) {
foreach ($data as $key => $value) {
$result->$key = $value;
}
if ($scenario) {
$result->setScenario('update'); //这里使用了场景
}
$result = $result->save(); //使用save()进行保存
} else {
$result = false;
}
}
}
return $result;
}
[查询操作]
/**
* 通过用户ID,圈子ID获取对应的圈子信息
*
* @param int $uid 用户ID
* @param int $circleId 圈子ID
*
* @return array|null
*/
public function getCircles($uid, $circleId)
{
$uid = intval($uid);
$circleId = intval($circleId);
$result = null;
if ($uid && $circleId) {
$result = self::find()->
where(['uid' => $uid, 'id' => $circleId])->
asArray()->
one();
}
return $result;
}