在CakePhP 3.0中,在主键以外的唯一索引上搜索MySQL数据库的首选方法是什么?

时间:2015-12-07 21:46:36

标签: mysql cakephp-3.0

我假设在以下示例中的简单get()中,$ accountName必须是行的主键的值,否则它甚至知道哪个键,索引或列你正在尝试搜索。

$myAccount = TableRegistry::get('Accounts')->get($accountName);   

假设我想搜索其他一些独特的索引。就我而言,它恰好只是一个varchar列。我希望结果加载到在Model / Entity / Account.php中设置的类中,在我的例子中是Account类。

1 个答案:

答案 0 :(得分:0)

使用CakePHP检索数据有很多方法。

在你提到的那个:

TableRegistry::get('MyTable')->get($someValue);

$someValue是主键,如果您遵循惯例,则命名为id

要快速检索主键以外的其他列的记录,您可能需要使用Dynamic Finders。为了理解这些动态构造方法的强大程度,您可以执行以下操作:

TableRegistry::get('Users')->findByUsername('joebob');
TableRegistry::get('Users')->findAllByUsername('joebob');
TableRegistry::get('Users')->findAllByUsernameOrEmail('joebob', 'joe@example.com');

这些例子来自文档。对于更有趣的内容,我建议您查看一下Cookbook的Retrieving Data & Results Sets部分。

编辑后,要按名称检索帐户,您可以执行以下操作:

$query = $this->Account->findByName($accountName);

如果帐户名称存储在名为name

的字段中