【问题标题】:My relationship is not working?我的关系不好吗?
【发布时间】:2016-12-27 09:30:38
【问题描述】:

当我编写这段代码时,我的关系不起作用。我如何编写这部分代码以便我可以访问$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();

【问题讨论】:

  • 没有提供足够的数据。请显示您的关系和数据库架构。

标签: laravel laravel-5 laravel-5.2


【解决方案1】:

当您使用查询构建器的 get 方法时,它会返回一个包含结果的 Illuminate\Support\Collection,其中每个结果都是 PHP StdClass 对象的一个​​实例,而不是 Eloquent Model 对象。

所以你不能使用StdClass 对象上的关系,你需要一个Eloquent 对象。为此,您应该使用 Eloquent 查询生成器作为:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多