在cakephp 3查询中选择除一个字段以外的所有字段

问题描述 投票:1回答:2

我只想选择除cakephp 3中的一个字段以外的所有字段。

Ex. $this->select('fname', 'lname', 'mname', 'email', 'password', 'status', 'created', 'modified');

这里我想选择除创建和修改之外的所有字段,因为我的另一个表有apprx 30字段,我想选择28个字段,并且不想提及select函数中的每个字段,因为它很耗时。

你能建议一个更好的方法吗?

cakephp orm cakephp-3.0
2个回答
4
投票

从CakePHP 3.6开始,引入了selectAllExcept()方法,该方法将从属于给定表的模式中选择所有列,除了在第二个参数中传递的那些列:

$query->selectAllExcept($table, ['modified', 'created']);

在早期版本中,您必须手动执行此操作,即从架构中获取所有可能的列并删除您不想包含的列,例如:

$query->select(
    array_diff($table->schema()->columns(), ['modified', 'created']);
);

在相关说明中,请检查以下要求取消选择功能的问题:https://github.com/cakephp/cakephp/issues/6904

也可以看看


2
投票

你可以找到所有,然后在运行时隐藏你不需要的东西

$model->hiddenProperties(['modified', 'created']);
© www.soinside.com 2019 - 2024. All rights reserved.