php - cakephp 3.2中同表模型关联两次

标签 php cakephp cakephp-3.x cakephp-3.2

我在cake 3.2做过模型关联

这里我已经为同一张表的一个id做了。

我试过为其他人做,但根本行不通

下面是流程。

我得到的输出

{
   "id": 1,
   "publisher_id": 133,
   "user_id": 118,
   "Publisher": {
       "id": 133,
        "name": "Sradha sradha"
    }

这里我也想绑定(bind)用户id,它属于同一个用户表

输出应该是这样的(我想在下面得到这样的)

 {
     "id": 1,
     "publisher_id": 133,
     "user_id": 118,
     "Publisher": {
          "id": 133,
          "name": "Sradha sradha"
     }
     "Users": {
         "id": 118,
         "name": "Sradha anjo"
     }

这里 publisher_id 和 user_id 都属于同一个用户表。

$this->AdminRevenues->belongsTo('Users', [ 
    'className' => 'Users', 
    'foreignKey' => 'user_id', 
    'propertyName' => 'Users']);

$this->AdminRevenues->belongsTo('Users', [ 
   'className' => 'Publisher', 
   'foreignKey' => 'publisher_id', 
   'propertyName' => 'Publisher']);

$totalAdminRevenue = $this->AdminRevenues->find('all')
->contain([
     'Users' => ['queryBuilder' => function ($q) {
    return $q->select(['id', 'name']);
 }]])
 ->toArray();

请提出建议,我们将不胜感激。

最佳答案

别名必须是唯一的

这是做什么的:

$this->AdminRevenues->belongsTo('Users', [ 
    'className' => 'Users', 
    'foreignKey' => 'user_id', 
    'propertyName' => 'Users']);

$this->AdminRevenues->belongsTo('Users', [ 
   'className' => 'Publisher', 
   'foreignKey' => 'publisher_id', 
   'propertyName' => 'Publisher']);

使用 AdminRevenues.user_id 声明关联,然后立即用关联 AdminRevenues.publisher_id 覆盖。实际上,对 belongsTo 的第一次调用没有执行任何操作。

关联别名必须是唯一的,否则 $foo = $this->AdminRevenues->Users 这样的代码会产生歧义。因此,只需使关联别名唯一即可:

$this->AdminRevenues->belongsTo('Users', [ 
    'className' => 'Users', 
    'foreignKey' => 'user_id', 
    'propertyName' => 'Users']);

$this->AdminRevenues->belongsTo('Publishers', [ // <--- 
   'className' => 'Users',                      // <---
   'foreignKey' => 'publisher_id', 
   'propertyName' => 'Publisher']);

关于php - cakephp 3.2中同表模型关联两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37988618/

相关文章:

Cakephp 3 i18n 不工作

php - 从 MySQL 表填充动态 HTML 表

php - 哪个 php\mysql 查询更合适

Cakephp SQL 转储不显示查询

php - 如何匹配与一组特定的其他记录关联的记录?

mysql - 防止 CakePHP3 全文索引匹配中的 SQL 注入(inject)

php - 表中的超链接 - '<a href="">'.$row[' 用户名'] .'</a>'

PHP 和 MySQL 设计 map 搜索站点

php - 多个文件/图像上传 CakePHP 3

cakephp - 避免 CakePHP 的 Auth 组件显示身份验证错误消息