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 !

藏色散人
藏色散人avant
2021-04-07 14:56:582478parcourir

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);
        }]);

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

Require

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

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());

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer