php - Laravel 获取按关系表排序的集合

标签 php mysql eloquent laravel-5.3

我有 2 个表,一个是杂志,另一个是问题。我已经像这样建立了他们的关系:

杂志型号:

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

问题模型:

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

我有一个查询,我在其中获取按列排序的杂志,然后在 foreach 循环中获取每本杂志的第一期并将其存储在数组中:

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

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

但是,我想创建一个集合而不是一个数组。我不确定我该如何进行这种查询,或者是否有办法以某种方式将值存储到 foreach 循环中的集合中?

最佳答案

有几种方法可以做到这一点。

您可以通过执行以下操作将数组转换为集合。

$issuesCollection = collect($issues);
$imagesCollection = collect($images);

您还可以初始化一个空集合,然后使用 push() 方法向其中追加项目。检查documentation

关于php - Laravel 获取按关系表排序的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166120/

相关文章:

php - 如何从 MySQL 数据创建二维码?

PHP - Laravel - 直接从 Eloquent 获取平均值,而不必循环结果

php - Laravel Eloquent - 如何加入表格

php - 在 PHP 中获取 Web 服务器版本

php - 警告 mktime() 期望参数 4 为长字符串

php - 使用 codeigniter 更新

PHP:在mysql中搜索逗号分隔的字符串?

php - 关系中使用的 Laravel Eloquent 和 Trimming 字段

php - 使用 PHP 将字符串放入 MySQL 数据库

php - Zend View 助手在模块中不可用