mysqldump dumping pivot table ...比x_id IN更好的东西(id' s)?

时间:2016-08-11 12:34:29

标签: php mysql laravel

我正在制作一个备份脚本,该脚本应该抓取系统上属于用户X的所有记录,以便我们稍后在需要时进行恢复。为此我使用mysqldump实用程序和" - 其中"。想法是允许用户在需要时备份和恢复数据。

我有很多数据透视表,我必须使用类似下面的代码进行备份:

    # get list of projects id's
    $projectsArr = $user->projects()->get()->lists('id')->toArray();

    $whereClause = '--where="project_id IN (' . implode(",", $projectsArr) . ')"';
    $table_name = 'project_task';
    $this->createTableBackup($projectsArr, $table_name, $whereClause);

当ID列表大约为500时,上面的代码工作正常,在我的情况下可能不是这样......

目前我能看到的唯一解决方案是将user_id添加到每个数据透视表:

    $whereClause = '--where="user_id = ' . $user->id . '"';
    $table_name = 'project_task';
    $this->createTableBackup($projectsArr, $table_name, $whereClause);

除了上面的内容之外,我的问题是否有更好的解决方案?

以下是我用于备份的代码片段:

public function dump($destinationFile, $table_name, $whereClause, $options) {
        $command = sprintf('mysqldump %s --user=%s --password=%s --host=%s --port=%s %s %s %s > %s', $options, escapeshellarg($this->user), escapeshellarg($this->password), escapeshellarg($this->host), escapeshellarg($this->port), escapeshellarg($this->database), escapeshellarg($table_name), escapeshellarg($whereClause), escapeshellarg($destinationFile)
        ); 
        return $this->run($command);
    }

0 个答案:

没有答案