Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP在数组中查找字段_Php_Arrays_Cakephp_Field - Fatal编程技术网

CakePHP在数组中查找字段

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' =>

我目前正在使用CakePHP find('all')函数从数据库中检索大量字段。我知道如何使用'fields'=>array('Model.Field')来限制返回的字段数量。但是,函数当前返回的数据如下所示:

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提到的方法,但它仍然返回所有值,而不仅仅是指定的字段。