Maison > cadre php > Laravel > Les requêtes Laravel n'ont plus besoin d'écrire beaucoup de jugements if else !

Les requêtes Laravel n'ont plus besoin d'écrire beaucoup de jugements if else !

藏色散人
Libérer: 2021-04-08 08:42:09
avant
2517 Les gens l'ont consulté

La colonne tutorielle suivante de laravel vous présentera "La requête Laravel n'a plus besoin d'écrire beaucoup de jugements ifelse, configurez-la simplement", j'espère qu'elle sera utile aux amis dans le besoin !

Les requêtes Laravel n'ont plus besoin d'écrire beaucoup de jugements if else !

Contexte

L'activité principale de l'entreprise est développée à l'aide du langage PHP et du framework laravel Lors de certaines requêtes de filtrage de liste, le code suivant, difficile à maintenir, apparaît souvent :

        //若干代码 根据参数执行不同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);
        }]);
Copier après la connexion

Solution

Si ces requêtes peuvent être configurées et que les données sont interrogées en fonction de la configuration au lieu de juger directement si elles sont dans le code, le code sera plus élégant. Je développe moi-même un package de services laravel-query-builder.

laravel-query-builder est le framework Laravel permettant d'exécuter le package de services de création de conditions de requête basé sur la configuration existante

Installer

composer require zyimm/laravelquery-builder
Copier après la connexion

Require

    {
      "require": {
          "php": ">=7.0",
          "fideloper/proxy": "^4.0",
          "laravel/framework": ">=5.5"
        }  
    }
Copier après la connexion

Utilisation

/**
// 目前支持条件操作符
    '=',
    '',
    '>',
    '>=',
    ' 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());
Copier après la connexion

génère des enregistrements de requête SQL comme indiqué ci-dessous :
Les requêtes Laravel nont plus besoin décrire beaucoup de jugements if else !

Conseils :
'in','not_in','between','not_between'Ces identifiants prennent en charge les tableaux et les caractères
Chaîne, chaîne facultative ',' et '.' comme délimiteurs.

C’est tellement simple que cela peut rendre notre code plus élégant !

Adresse du projet

Astuce : laravel-query-builderp(https://github.com/zyimm/laravel-query-builder)
Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal