首页 > 解决方案 > Laravel:是否可以直接从书籍集合中获取所有作者而无需循环?

问题描述

我一直在尝试从书籍集中获取所有作者。

$books = Books::all();
foreach($books as $book){ $book->author ... 

这段代码可以工作,但我想在不使用循环的情况下获得所有作者

$allAuthorsThruBooks = Books::someQueryMaybe();

$allAuthorsThruBooks 将显示作者列表。

谢谢!

标签: laraveleloquentrelationshipeloquent-relationship

解决方案


方法01

尝试 采摘

$authorList = collect($books)->pluck('author')->unique();
// use ->toArray() if you want to convert into array

方法02

创建助手

namespace App\Helpers;


use Illuminate\Support\Arr;

class ArrHelper
{
    public static function onlyValues($array = [], $keys = [])
    {
        return array_filter(
            array_values(
                Arr::only($array, $keys)
            )
        );
    }
}

在控制器中

$authorList = collect(ArrHelper::onlyValues($books, ['author']));

推荐阅读