Thinkphp HasOne 键值解析以及数据库查询得到数据,但是返回为空解析
记录一下自己的小错误~
一:
Thinkphp的Hasone是个偷懒神器,但是很多人用户的是不知道对应的键值。
首先官方链接(点我跳转)~
Eg:
use app\common\model\GoodsInfo;
class Goods {
public function goodsList($_where){
$_ret = $this->with(["goodsinfo"])->where($_where)->select();
if(!$_ret->isEmpty()){
return $_ret->toArray();
}
return [];
}
public function goodsinfo(){
return $this->hasOne(GoodsInfo:class,"foreignKey","localKey")->field(["id","name","img","sku"]);
}
}
注解来了:
1.格式就是上面的记得引入需要外链的class
2.关联的Key(外链键值)怎么设置
foreignKey:翻译过来就是 “外边的Key”,对应的就是关联的GoodsInfo这张表要对应的字段(gid)
localKeyKey: "本地的Key",对应的就是Goods这张表的字段(id)
所以补全上面的代码就是
public function goodsinfo(){
return $this->hasOne(GoodsInfo:class,"gid","id")->field(["id","name","img","sku"]);
}
3.强调键值说明!!!!
这里要强调一下,如果启用了后面的field的这个方法,就是只显示某些字段。
一定要记得。把前面的“id”带上不然你就会发现,明明我的数据库里面是有对应的数据但是查询出来,goodsinfo这个返回的是null,因为数据库查询出来了以后要去找啊,找到这条数据是谁的!