>  기사  >  PHP 프레임워크  >  Laravel 쿼리는 더 이상 if else 판단을 많이 작성할 필요가 없습니다!

Laravel 쿼리는 더 이상 if else 판단을 많이 작성할 필요가 없습니다!

藏色散人
藏色散人앞으로
2021-04-07 14:56:582367검색

다음 laravel 튜토리얼 칼럼에서는 "Laravel 쿼리는 더 이상 많은 ifelse 판단을 작성할 필요가 없으며 구성만 하면 됩니다"를 소개할 예정인데, 필요한 친구들에게 도움이 되길 바랍니다!

Laravel 쿼리는 더 이상 if else 판단을 많이 작성할 필요가 없습니다!

Background

회사의 주요 사업은 PHP 언어와 laravel 프레임워크를 사용하여 개발됩니다. 일부 목록 필터링 쿼리를 수행할 때 유지 관리하기 어려운 다음 코드가 자주 나타납니다.

        //若干代码 根据参数执行不同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

이 쿼리가 가능하다면 configure 코드에서 직접 판단하는 대신 구성에 따라 데이터를 쿼리하여 코드를 더욱 우아하게 만듭니다. 저는 서비스 패키지 laravel-query-builder를 직접 개발했습니다.

laravel-query-builder는 기존 구성을 기반으로 쿼리 조건 빌더 서비스 패키지를 실행하는 laravel 프레임워크입니다.

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

다음과 같이 SQL 쿼리 레코드를 생성합니다.
Laravel 쿼리는 더 이상 if else 판단을 많이 작성할 필요가 없습니다!

팁:
'in','not_in','between','not_between'이러한 식별자는 배열과 문자열을 지원하며 문자열은 선택적으로 ',' 및 '.'을 구분 기호로 사용할 수 있습니다.

너무 간단해서 코드를 더 우아하게 만들 수 있어요!

프로젝트 주소

팁: laravel-query-builderp (https://github.com/zyimm/laravel-query-builder)
관련 권장 사항:
최근 5개의 Laravel 비디오 튜토리얼

위 내용은 Laravel 쿼리는 더 이상 if else 판단을 많이 작성할 필요가 없습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제