получить первое значение ключа forign в laravel - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть три таблицы продуктов, категорий и изображений. Таблицы категорий и изображений связаны с таблицей товаров. когда я использую $all_product = Product::with('category','image')->get(); информация о продукте информация о категории и информация об изображении успешно отображаются, я хочу это Вопрос: как получить первое значение массива изображения?

"all_objects": [
    {
        "id": 1,
        "name": "samsung",
        "price": "2000",
        "category_id": 1,
        "created_at": "2020-02-17 13:27:24",
        "updated_at": "2020-02-17 13:27:24",
        "category": {
            "id": 1,
            "category_name": "android",
            "created_at": "2020-02-17 13:26:42",
            "updated_at": "2020-02-17 13:26:42"
        },
        "image": [
            {
                "id": 1,
                "image_name": "image_787.jpeg",
                "product_id": 1,
                "created_at": "2020-02-17 13:27:25",
                "updated_at": "2020-02-17 13:27:25"
            },
            {
                "id": 2,
                "image_name": "image_539.jpeg",
                "product_id": 1,
                "created_at": "2020-02-17 13:27:25",
                "updated_at": "2020-02-17 13:27:25"
            },
            {
                "id": 3,
                "image_name": "image_606.jpeg",
                "product_id": 1,
                "created_at": "2020-02-17 13:27:25",
                "updated_at": "2020-02-17 13:27:25"
            },
            {
                "id": 4,
                "image_name": "image_102.jpeg",
                "product_id": 1,
                "created_at": "2020-02-17 13:27:26",
                "updated_at": "2020-02-17 13:27:26"
            }
        ]
    },

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Метод get() возвращает экземпляр Illuminate\Database\Eloquent\Collection, поэтому вы можете использовать все доступные методы для Laravel коллекций .

Чтобы получить первое изображение:

$all_product = Product::with('category','image')->get();

foreach ($all_product as $product) {
    $first_image = optional($product->image)->first();

    // do whatever you want with the $first_image
}

Метод optional() используется в том случае, если продукт не имеет изображений (т. Е. $product->images был нулевым).

0 голосов
/ 17 февраля 2020

попробуйте это:

$all_product = App\Product::with(['category','image' => function ($query) {
    $query->first();
}])->get();

см. Ограничение энергичных нагрузок

...