搜索
系统检测到您的用户名不符合规范:

关于全局查询范围和数据库查询事件,是我操作问题还是bug问题

浏览:1329 发布日期:2020年03月29日 分类:ThinkPHP6专区 关键字: 数据库查询事件 全局查询范围
public function scopeBases(Query $query)
{
$id = $query->getPk();
$tableFields = $query->getTableFields();
//默认排序
if (in_array('sort', $tableFields)) {
$query->order('sort asc')->order("{$id} desc");
} else {
$query->order("{$id} desc");
}
//默认不包含软删除数据
if (in_array('is_deleted', $tableFields)) {
$query->where('is_deleted', 0);
}
}
当我用查全局查询范围的时候发现更新这些操作也会触发,不是应该是有查询的时候才触发才对吗,然后我想通过数据库查询事件来实现,然后发现返回只能是返回自己return 的结果,那我怎么能通过查询事件调用query回调得到自己想要的结果,只要定义了查询事件不return,就是返回空,那查询事件的意义有什么,还是我使用的方式不对?Db::event('before_select', function($query){
$id = $query->getPk();
$tableFields = $query->getTableFields();
//默认排序
if (in_array('sort', $tableFields)) {
$query->order('sort asc')->order("{$id} desc");
} else {
$query->order("{$id} desc");
}
//默认不包含软删除数据
if (in_array('is_deleted', $tableFields)) {
$query->where('is_deleted', 0);
}
});
class Index extends BaseController
{
public function initialize()
{
Db::event('before_find', function($q){
echo '执行查询';
});
}
public function index()
{
halt(Db::name('user')->find(3));
/*使用数据库查询事件返回结果,只是一个echo就改变了原数据
array(
0=>null
);
*/
/*不使用查询事件正常返回结果
array:15 [▼
"id" => 3
"headimg" => "1"
"nickname" => "<p>134355</p>"
"phone" => null
"openid" => "<p>sdff</p>"
"unionid" => null
"country" => null
"province" => null
"city" => null
"area" => null
"address" => null
"pay_pwd" => null
"money" => "0.00"
"create_at" => "2020年03月29日 11:35:02"
"update_time" => null
]
*/
}
}
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
Rocky
积分:367 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /