2015-12-10 16:53:32 7593次浏览 2条回答 0 悬赏 10 金钱

求大神指教 我现在操作数据库都是继承ActiveRecord

class UserWeibo extends ActiveRecord
{
	
	public static function tableName()
    {
    	return '{{%user_weibo}}';
    }

    /**
     * 添加
     */
    public function add($data) 
    {
        $this->setAttributes($data, false);

        if(self::find()->where(['id'=>$data['id']])->count() > 0) { //重复关注
            return $this->edit(['id'=>$data['id']], $data);
        }
        return $this->save();
    }
}

现在每次插入前都先判断下是否存在 我想改成用mysql的 replace into 求教应该怎么写

最佳答案

  • koko 发布于 2015-12-10 17:05 举报

    MySQL replace into 有三种形式:

    1. replace into tbl_name(col_name, ...) values(...)

    2. replace into tbl_name(col_name, ...) select ...

    3. replace into tbl_name set col_name=value, ...

    第一种形式类似于insert into的用法,

    第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。

    第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。

    2 条回复
    回复于 2015-12-10 17:11 回复

    怎么用在yii2里面的插入呢

    回复于 2015-12-10 20:50 回复

    findBySql()

您需要登录后才可以回答。登录 | 立即注册
路人甲
见习主管

路人甲

注册时间:2015-06-24
最后登录:2017-09-26
在线时长:11小时13分
  • 粉丝3
  • 金钱125
  • 威望0
  • 积分235

热门问题