CakePHP在数组中查找字段
我目前正在使用CakePHP find('all')函数从数据库中检索大量字段。我知道如何使用'fields'=>array('Model.Field')来限制返回的字段数量。但是,函数当前返回的数据如下所示:CakePHP在数组中查找字段,php,arrays,cakephp,field,Php,Arrays,Cakephp,Field,我目前正在使用CakePHP find('all')函数从数据库中检索大量字段。我知道如何使用'fields'=>array('Model.Field')来限制返回的字段数量。但是,函数当前返回的数据如下所示: array (size=1) 0 => 'Model' => array (size=1) 0 => array (size=8) 'Field1' =>
array (size=1)
0 =>
'Model' =>
array (size=1)
0 =>
array (size=8)
'Field1' => string 'value'
'Field2' => string 'value'
'Field3' => string 'value'
'Field4' => string 'value'
'Field5' => string 'value'
'Field6' => string 'value'
'Field7' => string 'value'
'Field8' => string 'value'
我只想返回其中的一些字段。但我找不到实现这一点的语法。我尝试了以下几种选择:
'Model.Field1' (returns false)
'Model.0.Field1' (returns false)
'Model.[0].Field1' (returns false)
'Model' => 0 => 'Field1' (invalid syntax)
'Model' => '0.Field1' (returns false)
有没有一种方法可以通过find函数实现这一点,或者我最好只编写自己的SQL查询
编辑:这是请求的查找功能-
$this->Model1->find('all', array(
'conditions' => $conditions,
'restrict' => array('Model1', 'Model2', 'Model3', 'Model4'),
'fields' => array('Model1.Field1', 'Model1.Field2', 'Model1.Field3', 'Model1.Field4', 'Model1.Field5', 'Model1.Field6', 'Model1.Field7',
'Model2.Field1', 'Model2.Field2', 'Model2.Field3', 'Model2.contract_id', 'Model2.Field4')
));
目前,这对于限制Model1和Model2的结果很有效,因为它们不会返回子数组中的值。如上所述,尝试对Model3和Model4使用相同的语法是行不通的。以下是我使用“包含”选项尝试执行的操作:
正如您在问题中提到的,您应该能够指定在
查找('all')
中返回哪些字段
$this->find('all', array(
'fields' => array(
'Model.Field1',
'Model.Field2',
// etc
)
));
如果Model
是相关模型,则可以使用ContainableBehavior
指定字段
$this->find('all', array(
'contain' => array(
'Model' => array(
'fields' => array(
'Field1',
'Field2', // etc
)
)
)
));
正如您在问题中提到的,您应该能够指定在
查找('all')
中返回哪些字段
$this->find('all', array(
'fields' => array(
'Model.Field1',
'Model.Field2',
// etc
)
));
如果Model
是相关模型,则可以使用ContainableBehavior
指定字段
$this->find('all', array(
'contain' => array(
'Model' => array(
'fields' => array(
'Field1',
'Field2', // etc
)
)
)
));
您是否可以发布完整的
find('all')
您是否可以发布完整的find('all')
我尝试了您在第二块中为Model3和Model4提到的方法,但它仍然返回所有值,而不仅仅是指定的字段。我尝试了您在第二块中为Model3和Model4提到的方法,但它仍然返回所有值,而不仅仅是指定的字段。