Laravel - 按关系排序 table
Laravel - order by relationship table
我有 2 tables issues
和 magazines
,他们之间的关系是这样的:
杂志型号:
public function issues()
{
return $this->hasMany('App\Issue');
}
问题模型:
public function magazine()
{
return $this->belongsTo('App\Magazine');
}
在杂志 table 中,有一列 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;
}
我收到错误:
Trying to get property of non-object
检查是否有问题 is_null
,如果没有,将图像添加到 $images
:
foreach ($magazines as $magazine)
{
$issue = $magazine->issues()->first();
if (!is_null($issue) {
$images[] = $issue->image;
}
}
我有 2 tables issues
和 magazines
,他们之间的关系是这样的:
杂志型号:
public function issues()
{
return $this->hasMany('App\Issue');
}
问题模型:
public function magazine()
{
return $this->belongsTo('App\Magazine');
}
在杂志 table 中,有一列 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;
}
我收到错误:
Trying to get property of non-object
检查是否有问题 is_null
,如果没有,将图像添加到 $images
:
foreach ($magazines as $magazine)
{
$issue = $magazine->issues()->first();
if (!is_null($issue) {
$images[] = $issue->image;
}
}