php - 仅将唯一值插入数据库表
问题描述
我vinkla/instagram
在我的 Laravel 中使用 composer 包来获取我的应用程序中的 Instagram 帖子。
由于 Instagram 允许包每小时调用他们的 API 200 次,我试图将帖子链接保存到数据库表中。这个包获取 20 个最新的帖子及其属性。
在这里,我试图比较vinkla/instagram
作曲家包获取的帖子链接和已经保存的帖子,并仅将唯一的插入到表中。下面是代码片段:
$instagram = new Instagram('access-token');
$posts = $instagram->media(); //gets 20 latest insta posts of a user
$fromDBs = Insta::orderBy('id', 'desc')->take(20)->get(); //get last 20 rows from table
foreach( $posts as $post)
{
foreach( $fromDBs as $fromDB)
{
if($post->images->low_resolution->url != $fromDB->link)
{
$create = new Insta;
$create->link = $post->images->low_resolution->url;
$create->save();
}
}
}
使用上述代码,新链接是插入x10
时间。仅插入一次唯一链接的正确方法是什么。
解决方案
eloquent上有firstOrCreate
或firstOrNew
辅助函数,因此只有在它不存在时才能创建它以防止重复。因此,您可以检查以下代码,而不是检查:
foreach( $posts as $post)
{
Insta::firstOrCreate(['link' => $post->images->low_resolution->url]);
}
推荐阅读
- php - 在收到字段后尝试将我的 PHP 表单重定向到另一个页面时出现错误
- javascript - 将函数设置为已弃用
- android - 如何解决:无法解决:com.mapbox.mapboxsdk:mapbox-android-sdk:9.5.0
- if-statement - If 语句和输入变量的值 - Pine 脚本 - Tradingview
- css - 使用 CSS Grid Full Bleed 布局获取“下一个/图像”?
- python - 无法从控制台发送消息到不和谐
- php - 我有这个 PHP 表单处理文件,它可以工作,但有 2 个我无法解决的问题
- heroku - 如何使用 Heroku 创建数据库
- python - 更改日期熊猫
- ios - Swift 从第三个 ViewController 导航到第一个 ViewController