关于thinkphp6关联模型中bindAttr的使用

方法一:使用bind方法绑定属性到父模型

	// 关联用户等级模型
 	public function level()
	{
        return $this->hasOne(UserLevel::class, 'id', 'level')->bind(['level_name']);
        // 属性别名; 别名在前,字段名在后
        // return $this->hasOne(UserLevel::class, 'id', 'level')
        // 		->bind(['level_name' => 'name']);
    }
    	
	// 查询
	User::with('level')->findOrEmpty(1);

    // 查询结果
    {
	    "id": 1,
	    "sn": "100001",
	    "nickname": "测试用户",
	    "level": 1,
	    "create_time": "2022-03-23 18:56:40",
	    "update_time": "2022-03-23 18:56:40",
	    "level_name": "普通等级"
	}

方法二:使用动态绑定关联属性

	// 关联用户等级模型
    public function userLevel()
    {
        return $this->hasOne(UserLevel::class, 'id', 'level');
    }
    
	// 查询语句
	User::with('user_level')->find(1)
        ->bindAttr('user_level', ['level_name'])
        ->hidden(['user_level']);
        
	// 查询结果
	{
	    "id": 1,
	    "sn": "100001",
	    "nickname": "测试用户",
	    "level": 1,
	    "create_time": "2021-09-06 18:29:39",
	    "update_time": "2021-09-06 18:29:39",
	    "level_name": "普通等级"
	}

	这里有一点要注意,如果用户等级表的level_name字段名为name时,使用bindAttr关联属性会返回用户等级表的模型名称。

最后:关于appendRelationAttr的使用

在文档中,appendRelationAttr方法的使用只是草草一句带过。实际用起来并没有达到预期效果。如果有朋友知道是具体是怎么使用的希望可以告知一下小弟。当然如果有其他疑问或者本文描述错误的也可以加一下我微信告知一下(MJ103536)。
原文档描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值