5.0.0 - 普通 - 未处理
在thinkphp5.0.11版本中,如果在model里面定义一对一关联,或一对多关联,或多对多关联,然后对关联添加with或where条件,在某些情况下会导致with或where条件不生效,类似下面<?php
namespace app\common\model;
class Task extends Base{
//全部下级任务
public function sub(){
return $this->hasMany('Task')->with([
'type',
'tag',
'attach'=>function($query){
return $query->with(['file']);
},
'comments',
]);
}
//任务类型
public function type(){
return $this->hasOne('TaskType','id','type_id');
}
//任务标签
public function tag(){
return $this->belongsToMany('TaskTag','TaskTagRelation','tag_id','task_id');
}
//评论
public function comments(){
return $this->hasMany('Comments','main_id','id')->where('main_type','101');
}
//附件
public function attach(){
return $this->hasMany('Attach','main_id','id')->where('main_type','101');
}
}在控制器里面调用了task类。model('task')->with(['sub'])->select();最后查询的结果里面,sub数组下的task对象没有正确关联模型内定义的关联对象{
"desc": "success",
"code": "200",
"data": [
{
"id": "1",
"company_id": "1",
"department_id": "1",
"project_id": "0",
"meeting_id": "0",
"task_id": "0",
"p_id": "0",
"type_id": "2",
"time_type": "103",
"user_id": "1",
"executor_id": "1",
"title": "",
"content": "这是一个月计划",
"status": "101",
"submit_time": "0",
"reviewer_id": "0",
"r_content": "",
"r_time": "0",
"star": "5",
"s_date_time": "101",
"e_date_time": "101",
"s_time": "1506787200",
"e_time": "1509465600",
"use_time": "0",
"sub_count": "0",
"res": "",
"c_time": "0",
"del_time": {},
"type": {
"id": "2",
"name": "管理",
"sort_name": "管",
"star": "0",
"desc": "",
"c_time": "0",
"del_time": {}
},
"tag": [],
"attach": [
{
"id": "1",
"company_id": "1",
"main_id": "1",
"main_type": "101",
"user_id": "1",
"recipient_id": "1",
"file_id": "1",
"token": "",
"name": "测试附件",
"size": "0",
"down_count": "0",
"c_time": "0",
"del_time": {},
"down_load_url": "xxx.png",
"file": {
"id": "1",
"name": "测试文件",
"type": "101",
"url": "http://www.exec.local/uploads/xxx.png",
"status": "101",
"c_time": "0",
"del_time": {}
}
}
],
"comments": [],
"sub": [
{
"id": "2",
"company_id": "1",
"department_id": "1",
"project_id": "0",
"meeting_id": "0",
"task_id": "1",
"p_id": "1",
"type_id": "1",
"time_type": "102",
"user_id": "1",
"executor_id": "1",
"title": "",
"content": "这是一月的第一个周计划",
"status": "101",
"submit_time": "0",
"reviewer_id": "0",
"r_content": "",
"r_time": "0",
"star": "4",
"s_date_time": "101",
"e_date_time": "101",
"s_time": "1506787200",
"e_time": "1507392000",
"use_time": "0",
"sub_count": "0",
"res": "",
"c_time": "0",
"del_time": {},
}
]
}
]
}这个BUG在thinkphp5.0.10以及之前的版本不存在,希望如果不是BUG能告知,谢谢! 