我在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/