2017-12-21 19 views
1

現在、Twitterのツイートを検索してデータベースに保存しようとしているプロジェクトで作業しています。このプロジェクトでは、私はLaravelとTwitterOAuthを使用しています。Twitter APIを使用してツイートを検索しているときに「stdClass型のオブジェクトを配列として使用できません」エラー

ここコードです:$tweetsはあなたがのようにそれを反復処理する必要がstatusesプロパティを持つオブジェクトですので

"(1/1) FatalErrorException 
Cannot use object of type stdClass as array 

in TwitterController.php (line 27)" 
+1

エラーが$ツイートはので、多分あなたは間違った方法 –

+1

してくださいをループしている、配列でないと言うので、私は '{それはこの1つ' foreachの($のつぶやきなど$ツイート)で推測しています線27をハイライトしてください –

+0

@AlexeyMezenin dd($ tweets)の結果は、{#167▼ + "ステータス":配列:15 [▶] + "search_metadata"の結果を表示します。 ":{#495}} } –

答えて

1

class TwitterController extends BaseController 
{ 
public function test() { 
    $connection = new TwitterOAuth('', 
     '', 
     '', 
     ''); 
    $content = $connection->get('account/verify_credentials'); 

    $tweets = $connection->get('search/tweets', 
     ['q' => "cryptocurrency"]); 

    foreach($tweets as $tweet) { 



     $tweet_id = $tweet[0]->id; 
     $oembed_j = file_get_contents('https://publish.twitter.com/oembed?url=https://twitter.com/x/status/' . $tweet_id); 
     $oembed = json_decode($oembed_j); 

     $twitter = new Twitter; 
     $twitter->url = $oembed->url; 
     $twitter->author_name = $oembed->author_name; 
     $twitter->author_url = $oembed->author_url; 
     $twitter->html = $oembed->html; 
     $twitter->width = $oembed->width; 
     $twitter->height = $oembed->height; 
     $twitter->type = $oembed->type; 
     $twitter->cache_age = $oembed->cache_age; 
     $twitter->provider_name = $oembed->provider_name; 
     $twitter->provider_url = $oembed->provider_url; 
     $twitter->version = $oembed->version; 
     $twitter->save(); 
    } 
} 

}

エラーがthis:

foreach ($tweets->statuses as $tweet) 
+0

ありがとうございます。しかし、今私はDBに挿入しようとすると、TwitterのHTMLに別の問題があります:SQLSTATE [22007]:無効な日時フォーマット:1366不正な文字列値: '\ xF0 \ x9F \ x98 \ x81 ...'行1の列 'html' –

+1

それは助けて嬉しいです。別の質問をして、この新しい日時書式エラーに関連するすべてのコードを投稿する必要があります。 –

関連する問題