You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CakePHP如何通过关联模型跨表取数:根据user_id获取对应用户名

CakePHP通过关联模型按user_id获取用户名方案

步骤1:配置Likes表与User表的关联

打开src/Model/Table/LikesTable.php,在initialize方法中添加如下关联规则:

$this->belongsTo('Users', [
    'foreignKey' => 'user_id',
    'joinType' => 'LEFT' // 如果需要点赞记录就算没有对应用户也返回就用LEFT,否则用INNER
]);

步骤2:修改控制器分页的关联加载配置

你原来的分页配置只加载了Post关联的Likes和Post关联的Users,需要嵌套加载Likes关联的Users数据,修改PostController中的分页代码:

$this->paginate = [
    'contain' => ['Users', 'Likes' => ['Users']],
];
$posts = $this->paginate($this->posts);

步骤3:视图中直接读取用户名

加载完成后,你可以直接通过层级调用获取对应用户名:
$post->likes->user->user_name
调用后将直接输出对应user_id匹配的用户名,你给出的示例中输出结果为sample_name。

注意事项

  • 确认src/Model/Entity/User.php的$_accessible属性中已放开user_name字段的访问权限,配置如下:
    protected $_accessible = [
        // 其他原有字段配置保留
        'user_name' => true,
    ];
    
  • 如果一篇文章对应多条点赞记录,你需要循环遍历$post->likes集合后再读取对应的用户信息。

内容的提问来源于stack exchange,提问作者Kiruaaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:51:00