【发布时间】:2021-01-12 12:35:00
【问题描述】:
我正在使用 Campbells GitHub package 为 Laravel 获取我所有的 GitHub 存储库。我做了一个命令和一个每分钟运行的 cronjob,它工作得非常好。唯一的问题是,当存储库从 GitHub 中删除时,它会保留在我的数据库中,而不是也被删除。
我遇到了一个名为whereNotIn() 的方法,它检查数据是否不符合指定的输入,您可以对其执行相应的操作。但我似乎无法让它工作。
例如,这个底部表格是 GitHub 存储库和我的数据库中的存储库的列表
GitHub Repos. | Website repos
Repo 1 | Repo 1
Repo 2 | Repo 2
Repo 3 | Repo 3
Repo 4 | Repo 4
| Repo 5
您会看到 GitHub 存储库列表比网站存储库少一个,这意味着在 GitHub 端删除了存储库,因此在这种情况下,也需要删除存储库 5 以保持最新的更改.
在命令中处理方法
public function handle() {
$repos = GitHub::connection('main')->me()->repositories();
foreach($repos as $repo) {
$name = str_replace(".", "-", $repo["name"]);
Project::whereNotIn('name', $name)->delete();
DB::table('projects')
->updateOrInsert(
['name' => $name],
[
'name' => $name,
'html_url' => $repo["html_url"],
'description' => $repo["description"],
'stargazers_count' => $repo["stargazers_count"],
'language' => $repo["language"],
]
);
}
}
【问题讨论】:
标签: php database laravel github cron