Heim  >  Artikel  >  PHP-Framework  >  Laravel-Abfragen müssen nicht mehr viele Wenn-Sonst-Urteile schreiben!

Laravel-Abfragen müssen nicht mehr viele Wenn-Sonst-Urteile schreiben!

藏色散人
藏色散人nach vorne
2021-04-07 14:56:582432Durchsuche

Die folgende Tutorial-Kolumne von laravel stellt Ihnen vor: „Laravel-Abfragen erfordern nicht mehr das Schreiben vieler ifelse-Urteile, konfigurieren Sie sie einfach.“ Ich hoffe, dass es Freunden, die es benötigen, hilfreich sein wird!

Laravel-Abfragen müssen nicht mehr viele Wenn-Sonst-Urteile schreiben!

Hintergrund

Das Hauptgeschäft des Unternehmens wird mithilfe der PHP-Sprache und des Laravel-Frameworks entwickelt. Bei einigen Listenfilterabfragen wird häufig der folgende Code angezeigt, der schwer zu warten ist:

        //若干代码 根据参数执行不同where
        if (request('has_score')) {
            $article = $article->with(['scores' => function ($query) {
                $query->where('type', self::TYPE);
                $query->with('user');
            }]);
        }
        if (has_module('Audit')) {
            $article = $article->with(['auditing' => function ($query) {
                $query->orderBy('id', 'desc');
            }]);
        }
        $article = $article->with(['videos' => function ($query) {
            $query->where('type', VIDEO);
        }])->with(['audios' => function ($query) {
            $
            query->where('type', AUDIO);
        }]);

Lösung

Wenn diese Abfragen möglich sind konfiguriert Stehen Sie auf und fragen Sie die Daten gemäß der Konfiguration ab, anstatt direkt zu beurteilen, ob sie im Code enthalten sind, damit der Code eleganter wird. Ich entwickle selbst ein Servicepaket Laravel-Query-Builder.

laravel-query-builder ist das Laravel-Framework zum Ausführen des Abfragebedingungs-Builder-Dienstpakets gemäß der vorhandenen Konfiguration.

Install

composer require zyimm/laravelquery-builder

Require

    {
      "require": {
          "php": ">=7.0",
          "fideloper/proxy": "^4.0",
          "laravel/framework": ">=5.5"
        }  
    }

Usage

/**
// 目前支持条件操作符
    '=',
    '',
    '>',
    '>=',
    ' 20,
    'user_id'=> 'zyimm',
    'user_name' => "zyimm,12"
];
//配置数据库字段查询操作
$condition =[
    '=' => [
        'log_id'
    ],
    'not_in' => [
        'user_id'
    ],
    'between' => [
        'user_name'
    ],
    'full_like' => [
        'user_id'
    ],
    '' => [
        'user_id'
    ],
    '>' => [
        'user_id'
    ]
];
DB::enableQueryLog();
//model
\App\Models\Log::query()
    ->where(function ($query) use ($build, $data, $condition){
        $build->buildQueryWhere($data ,$condition, $query);
    })->get();
dd(DB::getQueryLog());

generiert den SQL-Abfragedatensatz wie unten gezeigt:
Laravel-Abfragen müssen nicht mehr viele Wenn-Sonst-Urteile schreiben!

Tipps:
'in','not_in','between','not_between'Diese Bezeichner unterstützen Arrays und Zeichenfolgen, und Zeichenfolgen können optional „,“ und „.“ als Trennzeichen verwenden.

Es ist so einfach, dass es unseren Code eleganter machen kann!

Projektadresse

Tipp: laravel-query-builderp (https://github.com/zyimm/laravel-query-builder)
Verwandte Empfehlungen:
Die neuesten fünf Laravel-Video-Tutorials

Das obige ist der detaillierte Inhalt vonLaravel-Abfragen müssen nicht mehr viele Wenn-Sonst-Urteile schreiben!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen