【问题标题】:cakephp Call to member function patchEntities() on booleancakephp 在布尔值上调用成员函数 patchEntities()
【发布时间】:2019-07-24 11:20:32
【问题描述】:

每个人。我对补丁实体有疑问。我想通过使用表单来编辑实体。

  1. 使用表单(视图)编辑实体
  2. 发送数据(查看)
  3. 使用 patchEntities(控制器)应用数据

但是,当我尝试修补实体时出现错误。

表名称:tempTable
列:身份证、姓名、年龄

控制器

$data = $this->table->find('all');
if($this->request->is(['post'])){
    $entities = $table->patchEntities($data->toArray(), $this->request->data());
}
$this->set(compact('data'));

查看

<?= $this->Form->Create('tempTable');?>
<?php foreach ($data as $key=>$d): ?>
  <?= $this->Form->Control($key.'.name', ['type' => 'text', 'default' => $d->name]);?>
<?php endforeach; ?>
<?= $this->Form->submit('submit');?>
<?= $this->Form->end();?>

我收到一个错误“在布尔值上调用成员函数 patchEntities()”
我不明白为什么会收到错误消息。
你能给我一个提示吗? 非常感谢。

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    你没有执行你的查询,所以你不能在$data上使用toArray()方法,这就是$data-&gt;toArray()返回false(一个布尔值)的原因。

    $this-&gt;table-&gt;find('all') 只设置查询。您需要添加类似-&gt;all() 的内容来执行它。

    试试这段代码:

    
    $query = $data = $this->table->find('all');
    $data = $query->all();
    
    

    【讨论】:

    • 其实toArray()可以和查询对象一起使用,默认情况下\Cake\Datasource\ResultSetDecorator的所有方法都可以用于查询(除非查询对象上存在同名的具体方法)。调用其中一种方法将自动执行查询,并在生成的结果集上调用该方法。 book.cakephp.org/3.0/en/orm/…
    • 有趣,谢谢告知!知道为什么@SumuraiSasuraino 会出现此错误吗?
    • 这是因为$table 是一个布尔值。无论获得该变量的值如何,都没有以正确的方式完成。通常是这样的:stackoverflow.com/questions/31813722/…,拼写错误或模型未加载。
    • 非常感谢你们俩!由于拼写错误而发生错误。感谢您抽出宝贵时间解决此错误!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2021-05-23
    • 2018-12-17
    • 2018-10-20
    • 1970-01-01
    • 2019-04-19
    相关资源
    最近更新 更多