当我写这段代码时,我的关系不起作用。如何编写这部分代码,以便我可以访问$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) - > where(' approved',1) - > get() ;
答案 0 :(得分:1)
当您使用查询构建器的get
方法时,它会返回包含结果的Illuminate\Support\Collection
,其中每个结果都是PHP StdClass
对象的实例,而不是{{1}对象。
因此,您无法使用Eloquent Model
对象上的关系,您需要一个StdClass
对象。为此,您应该使用Eloquent
查询构建器:
Eloquent