CakePHP 双模型关联
CakePHP double model association
我的账户模型:id, name
我的条目模型:id,account_id1,account_id2,数量
所以我的条目有 2 个指向帐户模型的外键。
我是这样定义模型关联的。
$this->belongsTo(
'Acc1',
[
'className' => 'Accounts',
'foreignKey' => 'account_id1',
'joinType' => 'INNER',
]
);
$this->belongsTo(
'Acc2',
[
'className' => 'Accounts',
'foreignKey' => 'account_id2',
'joinType' => 'INNER',
]
);
现在我需要找到相关帐户名称以 "ab" 开头的条目。
在我的条目模型文件中:
$this->find()
->matching(
'Acc1',
function ($q) {
return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']);
}
);
这将给我相关帐户(account_id1)名称以 "ab"
开头的所有条目
$this->find()
->matching(
'Acc1',
function ($q) {
return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']);
}
)
->matching(
'Acc2',
function ($q) {
return $q->where(['LEFT(Acc2.name, 2) =' => 'ab']);
}
);
其中 两个 帐户名都以 "ab" 开头的结果。
如何获取 Acc1.name 或 Acc2.name 以 "ab" 开头的条目?
尝试在没有 ->matching
的情况下构建查询。您可以使用联接,或包含 Acc1
和 Acc2
。那么cake有一些OR方法可以帮助你。
->where(['LEFT(Acc1.name, 2) =' => 'ab'])
->orWhere(['LEFT(Acc2.name, 2) =' => 'ab']);
http://book.cakephp.org/3.0/en/orm/query-builder.html#advanced-conditions
我的账户模型:id, name
我的条目模型:id,account_id1,account_id2,数量
所以我的条目有 2 个指向帐户模型的外键。
我是这样定义模型关联的。
$this->belongsTo(
'Acc1',
[
'className' => 'Accounts',
'foreignKey' => 'account_id1',
'joinType' => 'INNER',
]
);
$this->belongsTo(
'Acc2',
[
'className' => 'Accounts',
'foreignKey' => 'account_id2',
'joinType' => 'INNER',
]
);
现在我需要找到相关帐户名称以 "ab" 开头的条目。
在我的条目模型文件中:
$this->find()
->matching(
'Acc1',
function ($q) {
return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']);
}
);
这将给我相关帐户(account_id1)名称以 "ab"
开头的所有条目$this->find()
->matching(
'Acc1',
function ($q) {
return $q->where(['LEFT(Acc1.name, 2) =' => 'ab']);
}
)
->matching(
'Acc2',
function ($q) {
return $q->where(['LEFT(Acc2.name, 2) =' => 'ab']);
}
);
其中 两个 帐户名都以 "ab" 开头的结果。
如何获取 Acc1.name 或 Acc2.name 以 "ab" 开头的条目?
尝试在没有 ->matching
的情况下构建查询。您可以使用联接,或包含 Acc1
和 Acc2
。那么cake有一些OR方法可以帮助你。
->where(['LEFT(Acc1.name, 2) =' => 'ab'])
->orWhere(['LEFT(Acc2.name, 2) =' => 'ab']);
http://book.cakephp.org/3.0/en/orm/query-builder.html#advanced-conditions