資料分析-基礎維度

jcc123發表於2019-11-17

這並不是什麼理論性,標準,只是自己在實踐的過程中認為其符合“資料分析-基礎維度”這一概念,姑且稱之,如有思維錯誤,請留言改正

1 什麼是基礎維度?

比如寫的這篇文章,你在上方搜尋 資料分析-基礎維度,這篇文章會顯示出來。或者你搜尋什麼是基礎維度?這篇文章也會顯示出來。
也可以這樣理解,有A1 A2 A3 ...An這樣n條資料,根據某一條件或者某幾個條件(條件互不影響)查詢出某一條或者某幾條結構一樣的資料,稱之為-基礎維度的資料分析

2 怎麼使用

從上面可以瞭解,對mysql來說,就是一個sql的條件查詢,請注意基礎維度關注的是一點

select * from posts where title='xxx' and content='xxxx';

你可能會問,比如說 between xxx and xxx 查詢,這關注的不是一個,而是一個。這裡要澄清一下,其實這裡也是關注的一個,這些,還是在同一維度上,只不過是有多個而已。最後它們造成的結果,在這基礎維度上是一樣的,只不過資料多了幾條者少了幾條,並沒有改變這基礎維度

3 Laravel 怎麼優雅的使用

這裡推薦用DB,為什麼不用Eloquent ORM。當然在基礎維度上,這兩者都可以,但之後的時間維度空間維度就有點捉襟見忖了。

1 在這裡定義一個基礎維度的抽象類

<?php namespace App\Services\Search\Db\Filter;

use Illuminate\Http\Request;
use Illuminate\Database\Query\Builder;

abstract class QueryFilter
{

    protected $request;
    protected $builder;

    public function __construct(Request $request)
    {
        $this->request = $request;
    }

    public function apply(Builder $builder)
    {
        $this->builder = $builder;
        $this->init();

        foreach ($this->filters() as $name => $value) {
            if($value){
                if (method_exists($this, $name)) {
                    call_user_func_array([$this, $name],[$value]);
                }
            }

        }

        return $this->builder;
    }

    protected function init()
    {
        //子類可以做一些初始化的查詢
    }
    public function filters()
    {
        return $this->request->all();
    }
}

2 接著 PostFilter 繼承抽象類

<?php

namespace App\Services\Search\Db\Filter;

class PostFilter extends QueryFilter
{

    public function title($title)
    {
        return $this->builder->where('title', 'like', "%{$title}%");
    }

    public function content($content)
    {
        return $this->builder->where('content','like', "%{$content}%");
    }
}

3 最後去使用

use DB;

DB::table('posts')->where(function($query){
    app(\App\Services\Search\Db\Filter\PostFilter::class)->apply($query);

})->get();

請求資料的時候帶著title或者content自動去查詢

NOT IS BECAUSE I WANT TO WRITE,
BUT I WANT TO INCREASE,
SO I GO TO WRITE~~

相關文章