Витягування кількох колонок з колекцій у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 10 грудня, 2024
Ви знаєте, як максимально ефективно витягти необхідні дані з колекцій у Laravel? Досліджте, як поєднання методів map та only дозволяє легко отримувати конкретні колонки, забезпечуючи чистий і зручний код для вашого проєкту

Laravel пропонує ефективний спосіб витягування значень з кількох колонок колекцій за допомогою методу map. На відміну від методу pluck(), який обмежений лише однією колонкою, комбінація map з only дозволяє більш гнучко працювати з даними.

# Як працює map з only

Поєднання методів map та only робить можливим ефективне витягування конкретних колонок з колекцій. Ось як можна реалізувати це:

<?php
 
namespace App\Http\Controllers;
 
use App\Models\Article;
use Illuminate\Http\Request;
 
class ArticleController extends Controller
{
    public function list()
    {
        return Article::take(20)->get()->map->only([
            'title',
            'content',
            'summary',
            'url_path'
        ]);
    }
}

Розглянемо практичний приклад для системи управління статтями:

<?php
 
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
 
return new class extends Migration
{
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->text('summary');
            $table->string('url_path');
            $table->timestamps();
        });
    }
};
 
// ArticleSeeder.php
use App\Models\Article;
 
class ArticleSeeder extends Seeder
{
    public function run()
    {
        Article::create([
            'title' => 'Getting Started',
            'content' => 'Повний текст статті...',
            'summary' => 'Короткий посібник для початківців',
            'url_path' => 'getting-started'
        ]);
 
        Article::create([
            'title' => 'Advanced Topics',
            'content' => 'Тематичний контент...',
            'summary' => 'Глибоке занурення у функції',
            'url_path' => 'advanced-topics'
        ]);
    }
}

Відповідь API міститиме лише вказані поля:

[
    {
        "title": "Getting Started",
        "content": "Повний текст статті...",
        "summary": "Короткий посібник для початківців",
        "url_path": "getting-started"
    },
    {
        "title": "Advanced Topics",
        "content": "Тематичний контент...",
        "summary": "Глибоке занурення у функції",
        "url_path": "advanced-topics"
    }
]

Комбінація map з only забезпечує чистий і ефективний спосіб витягування декількох колонок з колекцій Laravel, спрощуючи трансформацію даних і зберігаючи код читабельним та підтримуваним

Популярні

Logomark Logotype

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту

Logomark Logotype

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення