2017-12-21 5 views
1

Ich arbeite derzeit an einem Projekt, wo ich versuche, nach Tweets suchen und speichern Sie sie dann in einer Datenbank. Für dieses Projekt verwende ich Laravel und TwitterOAuth."Kann nicht Objekt des Typs stdClass als Array verwenden" Fehler bei der Suche nach Tweets mit der Twitter API

Hier ist der Code:

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(); 
    } 
} 

}

und die Fehler:

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

in TwitterController.php (line 27)" 
+1

bitte markieren Linie 27. Ich vermute, es dieses ist 'foreach ($ Tweets wie $ tweet) {' so die Fehler sagt, dass $ Tweets kein Array ist, vielleicht sind Looping Sie die falsche Art und Weise –

+1

Bitte Zeige die Ergebnisse von 'dd ($ tweets);' eingefügt direkt vor 'foreach' Klausel –

+0

@AlexeyMezenin dd ($ tweets) ergibt: {# 167 ▼ +" status ": array: 15 [▶] +" search_metadata ": {# 495 ▶} } –

Antwort

1

Da $tweets ein Objekt mit statuses Eigenschaft ist, dass Sie über sie iterieren müssen wie dies:

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

Danke, das hat funktioniert. Aber jetzt habe ich ein anderes Problem mit dem HTML des Tweets, wenn ich versuche, es in die DB einzufügen: SQLSTATE [22007]: Ungültiges Datetime-Format: 1366 Falscher String-Wert: '\ xF0 \ x9F \ x98 \ x81 ...' für Spalte 'html' in Zeile 1 –

+1

Froh, dass es geholfen hat. Sie sollten eine andere Frage stellen und den gesamten Code für diesen neuen Datetime-Formatfehler posten. –

Verwandte Themen