我在Laravel中使用vinkla/instagram
作曲家软件包在我的应用程序中获取Instagram帖子。
由于Instagram允许程序包每小时调用其API 200次,因此我试图将帖子链接保存到数据库表中。此程序包可获取20条最新帖子及其属性。
在这里,我正在尝试比较vinkla/instagram
作曲家软件包中提取的帖子和已经保存的帖子的链接,仅将unique插入表中。
下面是代码片段:
$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
次。
仅一次插入唯一链接的正确方法是什么。
答案 0 :(得分:3)
eloquent上有firstOrCreate
或firstOrNew
辅助函数,因此只有在不存在辅助函数时才能创建它,以防止重复。因此,您无需检查即可检查以下代码:
foreach( $posts as $post)
{
Insta::firstOrCreate(['link' => $post->images->low_resolution->url]);
}
答案 1 :(得分:1)
...
foreach( $posts as $post)
{
foreach( $fromDBs as $fromDB)
{
if($post->images->low_resolution->url != $fromDB->link)
{
$create = Insta::firstOrNew(['link' => $post->images->low_resolution->url]);
if(! $create->id ) $create->save();
}
}
}