2016-12-27 18 views
0

このコードを書くと、私の関係は機能しません。 $article->translations()にアクセスできるように、このコード部分をどのように書くことができますか?なにか提案を?私の関係は機能していませんか?

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

私はそれを得ました。私が$ articles = articles :: whereRaw( 'MONTH(created_at)='。$ date_number) - >ここで( 'approved'、1) - > get();

+0

データが不十分です。関係とDBスキーマを表示してください。 –

答えて

1

クエリビルダのgetメソッドを使用する場合、それはそれぞれの結果は、PHP StdClassオブジェクトではないEloquent Modelオブジェクトのインスタンスである結果を含むIlluminate\Support\Collectionを返します。

StdClassオブジェクトで関係を使用することができないので、Eloquentオブジェクトが必要です。そのためには、Eloquentクエリービルダーを次のように使用する必要があります。

$articles = Article::whereRaw('MONTH(created_at) ='.$date_number) 
       ->where('approved',1) 
       ->get(); 
関連する問題