我在蛋糕3.2中做了模型关联
这里我已经为同一个表的一个id做了这个。
我试图为其他人做这件事,但它根本不起作用
以下是流程。
此输出我正在
{
"id": 1,
"publisher_id": 133,
"user_id": 118,
"Publisher": {
"id": 133,
"name": "Sradha sradha"
}
这里我想绑定用户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();
请建议,任何建议都将受到高度赞赏。
答案 0 :(得分:8)
这是做什么的:
$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']);
答案 1 :(得分:1)
在cakephp 3 +
中适用于我假设你有两张桌子,即 1)RequestArticles 3)商店
我们有两个类似的模型: -
1)RequestArticlesTable 2)StoreTable
以下是您需要在RequestArticlesTable中定义的关联,我们正在将Store表连接两次
PokerHands
现在我们将如下所示连接Controller中的表并设置数据以查看: -
public function initialize(array $config)
{
parent::initialize($config);
$this->table('request_articles');
$this->displayField('id');
$this->primaryKey('id');
$this->belongsTo( 'yourstore', [
'foreignKey' => 'store_id',
'className' => 'Store'
]);
$this->belongsTo( 'fromstore', [
'foreignKey' => 'from_store_id',
'className' => 'Store'
]);
}
答案 2 :(得分:0)
我的解决方案,在容器中的控制器中调用它
$this->belongsTo('Senders', [
'foreignKey' => 'sender_id',
'joinType' => 'LEFT',
'className' => 'Manager.Users'
]);
$this->belongsTo('Receivers', [
'foreignKey' => 'receiver_id',
'joinType' => 'LEFT',
'className' => 'Manager.Users'
]);