数据分析-基础维度
这并不是什么理论性,标准,只是自己在实践的过程中认为其符合 “数据分析 - 基础维度” 这一概念,姑且称之,如有思维错误,请留言改正
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
自动去查询
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: