mysql - CakePHP / MySQL 获得松散关联的数据
问题描述
所以我的数据库中有两个表,第一个是在为订阅付款时创建的,并以用户的电子邮件作为参考。然后用户在事后创建一个帐户。所以没有设置外键。
我想生成一个查询,该查询将从这个订阅生成表中获取数据。我正在尝试这样的事情:
// Querying the members table, trying to include member_subsr data
$oMembers = $Members->find('all',
[
'contains' => ['member_subscr'],
'conditions' => [
'member_email' => 'members.email'
],
'order' =>
[
'id' => 'DESC'
]
]);
错误:Column not found: 1054 Unknown column 'member_email' in 'where clause'
不知道从这里去哪里。我想通过用户电子邮件而不是外键来关联条目。
任何帮助,将不胜感激。
解决方案
我解决了。当处理与平常不同的 foreignKey 时,您必须在 MembersTable 初始化函数中设置 foreignKey 和一个新的 BindingKey。
// In MembersTable
$this->hasOne('member_attributes')
->setForeignKey('member_email')
->setBindingKey('email');
// in Controller
$oMembers = $Members->find('all')->contain(['member_attributes']);
推荐阅读
- python - 将两个 csv 文件合并到字典列表中
- c# - WebClient DownloadFileCompleted 事件未在最后一项中调用
- python - 使用多行作为 pandas 的列标题
- python - Python:为什么这个正则表达式不起作用?
- c# - Win 表单,选中时如何为单选按钮分配方法
- parsing - 如何使用 FastParse 处理文本表?
- c# - 在 .net core clobbers SQL Server 数据库中以逐字字符串 (@) 运行原始选择查询
- python - 使用 keras 保存模型
- javascript - 创建来自外国的服务人员
- sql - 从重叠的日期范围创建新的日期范围并分配一个 ID