如何访问对象数据PHP CakePHP 3.1 - php

这是一个cakephp 3.1查询结果,我希望直接访问$ data-> items,但是我收到一条错误消息,指出未找到关键项目,并且我不希望使用funtcion toArray(),因为如果我这样做了只会返回'items'=> ...,而我丢失了所有'query'=> ...信息。
您能以正确的语法帮助我获得$ data-> items或$ data-> {'items'} ...

$data = object(Cake\ORM\ResultSet) {

    'query' => object(Cake\ORM\Query) {

        '(help)' => 'This is a Query object, to get the results execute or iterate it.',
        'sql' => 'SELECT Posts_types.id AS `Posts_types__id`, Posts_types.name AS `Posts_types__name` FROM posts_types Posts_types ORDER BY id ASC',
        'params' => [],
        'defaultTypes' => [
            'Posts_types.id' => 'integer',
            'id' => 'integer',
            'Posts_types.name' => 'string',
            'name' => 'string'
        ],
        'decorators' => (int) 0,
        'executed' => true,
        'hydrate' => true,
        'buffered' => true,
        'formatters' => (int) 0,
        'mapReducers' => (int) 0,
        'contain' => [],
        'matching' => [],
        'extraOptions' => [],
        'repository' => object(Cake\ORM\Table) {

            'registryAlias' => 'Posts_types',
            'table' => 'posts_types',
            'alias' => 'Posts_types',
            'entityClass' => '\Cake\ORM\Entity',
            'associations' => [],
            'behaviors' => [],
            'defaultConnection' => 'default',
            'connectionName' => 'default'

        }

    },
    'items' => [
        (int) 0 => object(Cake\ORM\Entity) {

            'id' => (int) 1,
            'name' => 'Descriptif de la formation',
            '[new]' => false,
            '[accessible]' => [
                '*' => true
            ],
            '[dirty]' => [],
            '[original]' => [],
            '[virtual]' => [],
            '[errors]' => [],
            '[repository]' => 'Posts_types'

        },
        (int) 1 => object(Cake\ORM\Entity) {

            'id' => (int) 2,
            'name' => 'Cours',
            '[new]' => false,
            '[accessible]' => [
                '*' => true
            ],
            '[dirty]' => [],
            '[original]' => [],
            '[virtual]' => [],
            '[errors]' => [],
            '[repository]' => 'Posts_types'

        },
        (int) 2 => object(Cake\ORM\Entity) {

            'id' => (int) 3,
            'name' => 'Evénements',
            '[new]' => false,
            '[accessible]' => [
                '*' => true
            ],
            '[dirty]' => [],
            '[original]' => [],
            '[virtual]' => [],
            '[errors]' => [],
            '[repository]' => 'Posts_types'

        }
    ]

}

参考方案

没有项目属性
问题中的项目关键字是调用toArray的结果,这是您所要求的直接答案。
从the result set class和the collection trait使用的公共方法可以很明显地看出,结果集的任何属性都不能直接访问。
这是一个演示如何使用结果集的简单示例:

use Cake\ORM\TableRegistry;

$resultSet = TableRegistry::get('Posts');

// Iterate it
foreach($resultSet as $postObject) {
    echo $postObject->title;
}

// Obtain data as an array
$arrayofPostObjects = $resultSet->toArray();

echo get_class($resultSet); // It is still a result set

请注意,在resultSet上调用方法不会更改其内容-它仍然是结果集,不会丢失任何信息。这个问题存在误解,但由于不清楚您在做什么,因此不清楚该误解是什么。
如何获取查询?
您曾在评论中要求:

如果我想获取$ data-> query怎么办?

这是您的应用程序永远都不应做的事情,作为开发人员,您通常只希望在调试过程中这样做。大多数类实现__debugInfo-这是debug/var_dumping a result set object时两个关键字“ query”和“ items”的来源:

/**
 * Returns an array that can be used to describe the internal state of this
 * object.
 *
 * @return array
 */
public function __debugInfo()
{
    return [
        'query' => $this->_query,
        'items' => $this->toArray(),
    ];
}

因此,要获取查询,您唯一需要做的就是debug / var_dump对象。如前所述,这也表明“项目”只是调用toArray的结果。
请注意,要记录所有查询,请配置query logging,显然所有开发人员都应在开发中使用Debug Kit。

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

twilio'未知上下文帐户 - php

我正在尝试通过Twilio和Php发送一条简单的SMS,但是出现此致命错误, 未捕获的异常“ Twilio \ Exceptions \ TwilioException”,带有消息 的“未知上下文帐户” C:\ xampp \ htdocs \ Twilio \ vendor \ twilio \ sdk \ Twilio \ Rest \ Client.p…

PHP数组可以这样做吗? - php

可以说;我有一个$ friends数组,其中有2,000个不同的friendID号+我有一个带有10,000 bulletinID号的$ bulletins数组,该$ bulletins数组还将具有另一个值,该ID的用户ID是发布公告条目的用户现在可以获取所有具有与FriendsID数组中的userID匹配的userID的bulletinID号吗?甚至有可能…

php getdate()-小时不正确 - php

我在iframe中将php用于计数器。我正在使用getdate();功能。我的当地时间不是下午12:16,如果我使用getdate();从php获取现在的本地时间,小时显示为13。我从php getdate()回答的值应该不是12吗?$d1=getdate(); $hournew=$d1['hours']; echo $hournew .…

CakePHP将数据传递到元素 - php

我的控制器中有以下代码:function index() { $posts = $this->set('posts', $this->Portfolio->find('all')); if (isset($this->params['requested'])) { retur…