首页 > 解决方案 > cakephp 在布尔值上调用成员函数 patchEntities()

问题描述

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

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

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

表名:tempTable
列:id、name、age

控制器

$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

解决方案


您没有执行查询,因此不能使用toArray()on 方法$data,这就是$data->toArray()返回false(布尔值)的原因。

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

试试这段代码:


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


推荐阅读