Cakephp3使用finder加载数据不起作用

时间:2016-04-20 11:07:34

标签: php cakephp cakephp-3.0

我一直在关注这几行代码,如食谱Here

所示
$query = $articles->find('all', [
    'conditions' => ['Articles.created >' => new DateTime('-10 days')],
    'contain' => ['Authors', 'Comments'],
    'limit' => 10
]);

就我而言,代码是:

$samples_data = $samples->find('all', [
        'conditions' => ['Samples.created >' => new DateTime('-10 days')],
        'contain' => ['Users', 'Tests'],
        'limit' => 10
    ]);

    foreach ($samples_data as $data) {
        debug($data);
    }

但是我收到了这个错误:

enter image description here

注意:我的数据库中创建的列的类型为“ datetime

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

你的代码看起来不错,除了一件事 -

新的DateTime(' -10天')将返回对象http://php.net/manual/en/datetime.construct.php,而不是字符串 这里需要做一些改变。

$query = $articles->find('all', [
    'conditions' => ['Articles.created >' => new DateTime('-10 days')->format('Y-m-d H:i:s')],
    'contain' => ['Authors', 'Comments'],
    'limit' => 10
]);

$samples_data = $samples->find('all', [
        'conditions' => ['Samples.created >' => new DateTime('-10 days')->format('Y-m-d H:i:s')],
        'contain' => ['Users', 'Tests'],
        'limit' => 10
    ]);

    foreach ($samples_data as $data) {
        debug($data);
    }

此代码段可能适用于您的情况。

答案 1 :(得分:0)

@abhishek是对的。您尝试将对象设置为字符串。如果你想绕过cakephp的方式,你可以使用纯PHP的方式,将创建的值更改为:

Date('Y-m-d H:i:s', strtotime(-10 days))