模型层
模型层介绍
模型层主要是和数据库的表进行映射,一般一个模型对应一个数据表。详细参考 ThinkOrm
php
<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: your name
// +----------------------------------------------------------------------
namespace app\cms\model\news;
use plugin\saiadmin\basic\BaseModel;
/**
* 文章管理模型
*/
class Article extends BaseModel
{
/**
* 数据表主键
* @var string
*/
protected $pk = 'id';
/**
* 数据库表名称
* @var string
*/
protected $table = 'eb_article';
/**
* 文章标题 搜索
*/
public function searchTitleAttr($query, $value)
{
$query->where('title', 'like', '%'.$value.'%');
}
/**
* 关联模型category
*/
public function category()
{
return $this->belongsTo(ArticleCategory::class, 'category_id', 'id');
}
}
注意
我们的模型继承了 BaseModel。并且使用了ThinkORM
的搜索器功能,至于什么是搜索器?,可以查看 ThinkORM
文档。
搜索器加强
如果控制器中传递参数是通过“=”进行数据查询的,这里不用写搜索器,因为在SaiAdmin
中已经内置好了,内置的位置就是basicLogic
里面的search
方法,例如在下面这个控制器中,我们定义了两个字段的搜索,title
我们在上面的模型中看到,做了like
方式的搜索器处理,但是author
我们未作处理还是可以实现搜索功能,这是因为SaiAdmin
内置了=
方式的搜索器,我们只需要在控制器中定义即可:
php
<?php
#---省略代码------------------------
/**
* 数据列表
* @param Request $request
* @return Response
*/
public function index(Request $request): Response
{
$where = $request->more([
['title', ''],
['author', ''],
]);
$query = $this->logic->search($where);
$data = $this->logic->getList($query);
}