【问题标题】:Laravel - order by relationship tableLaravel - 按关系表排序
【发布时间】:2017-05-24 14:51:24
【问题描述】:

我有 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;
        }

我得到错误:

试图获取非对象的属性

【问题讨论】:

  • 在执行$magazine->issues()->first()->image之前检查$magazine->issues()->first()没有返回null

标签: php mysql eloquent laravel-5.3


【解决方案1】:

检查是否有问题is_null,如果没有,将图像添加到$images

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

【讨论】:

    猜你喜欢
    • 2019-05-14
    • 2014-06-25
    • 2015-04-22
    • 2022-01-22
    • 2021-01-25
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多