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