Laravel - 按关系表排序

时间:2017-05-24 14:51:25

标签: php mysql eloquent laravel-5.3

我有2个表issuesmagazines,他们的关系设置如下:

杂志模特:

 public function issues()
 {
     return $this->hasMany('App\Issue');
 }

问题模型:

public function magazine()
{
    return $this->belongsTo('App\Magazine');
}

在杂志表中,我有一列order,其中杂志的订单号是。我需要显示每本杂志的最新一期,由杂志订购。 现在我正在显示每期杂志的最新期刊。

        $issues = Issue::orderBy('date', 'desc')->get()->groupBy('magazine_id');

        foreach ($issues->first() as $issue)
        {
            $images[] = $issue->image;
        }

这很好用。 但是使用新查询:

         $magazines = Magazine::with('issues')->orderBy('order')->get();


        foreach ($magazines as $magazine)
        {
            $issues = $magazine->issues()->first();
            $images[] = $magazine->issues()->first()->image;
        }

我收到错误:

  

尝试获取非对象的属性

1 个答案:

答案 0 :(得分:0)

只需检查问题is_null,如果没有,请将图片添加到$images

    foreach ($magazines as $magazine)
    {
        $issue = $magazine->issues()->first();
        if (!is_null($issue) {
            $images[] = $issue->image;
        }
    }