2016-12-27 10 views
0

Wenn ich diesen Code schreibe, funktioniert meine Beziehung nicht. Wie kann ich diesen Teil des Codes schreiben, so dass ich auf $article->translations() zugreifen kann. Irgendein Vorschlag?Meine Beziehung funktioniert nicht?

$date_number = strval(date('m', strtotime($month))); 
     $articles = DB::table('articles')->whereRaw('MONTH(created_at) ='.$date_number)->where('approved',1)->get(); 

foreach($articles as $article){ 
    $article->trans = $article->translations()->whereHas('language',function($query) use($current_language_id){ 
     $query->where('id','=',$current_language_id); 
    })->first(); 
    } 

Ich habe es. Wenn ich $ articles = Articles :: whereRaw ('MONAT (created_at) ='. $ Date_number) verwende -> wo ('approved', 1) -> get();

+0

Nicht genügend Daten zur Verfügung gestellt. Bitte zeigen Sie Ihre Beziehungen und DB-Schema. –

Antwort

1

Wenn Sie Query Builder die Verwendung get Methode es gibt ein Illuminate\Support\Collection die Ergebnisse enthalten, wobei jedes Ergebnis eine Instanz des PHP ist StdClass kein Eloquent Model Objekt-Objekt.

So können Sie nicht die Beziehungen auf StdClass Objekt verwenden, benötigen Sie ein Eloquent Objekt. Und dafür sollten Sie Eloquent Abfrage-Generator wie verwenden:

$articles = Article::whereRaw('MONTH(created_at) ='.$date_number) 
       ->where('approved',1) 
       ->get(); 
Verwandte Themen