【问题标题】:Edit data in the MySQL DB table with no Primary Key in CakePHP在 CakePHP 中编辑没有主键的 MySQL DB 表中的数据
【发布时间】:2015-03-25 12:37:50
【问题描述】:

在 Windows 系统上使用 cakephp-2.6.3。

我只需要编辑我在ABCData/index.php 文件中列出的 MySQL 数据库表中的行数据。

控制器

    public function index() {
        $this->set('abcdata', $this->ABCData->find('all'));
    }

    public function edit($custom_id = null) {
        if (!$custom_id) {
            throw new NotFoundException(__('Invalid entry'));
        }

        $post = $this->ABCData->findById($custom_id);
        if (!$abcdata) {
            throw new NotFoundException(__('Invalid entry'));
        }

        if ($this->request->is(array('post', 'put'))) {
            $this->ABCData->custom_id = $custom_id;
            if ($this->ABCData->save($this->request->data)) {
                $this->Session->setFlash(__('Your ABCData has been updated.'));
                return $this->redirect(array('action' => 'index'));
            }
            $this->Session->setFlash(__('Unable to update your ABCData.'));
        }

        if (!$this->request->data) {
            $this->request->data = $abcdata;
        }
    }
}

型号

class ABCData extends AppModel {
    public $primaryKey = 'custom_id';
}

index.ctp

    <h3>ABCData list</h3>
<table>
    <tr>
        <th></th>
        <th>field_1</th>
        <th>field_2</th>
        <th>field_3</th>
        <th>...</th>
        <th>...</th>
        ...
    </tr>

    <?php foreach ($abcdata as $abc): ?>
    <tr>
        <td><?php echo $this->Html->link('Edit', array('action' => 'edit', $abc['ABCData']['custom_id']));?></td>
        <td><?php echo $abc['ABCData']['field_1']; ?></td>
        <td><?php echo $abc['ABCData']['field_2']; ?></td>
        <td><?php echo $abc['ABCData']['field_3']; ?></td>
        <td>...</td>
        <td>...</td>
        ...
    </tr>
    <?php endforeach; ?>
    <?php unset($abcdata); ?>
</table>

edit.ctp

<h1>Edit ABCata</h1>
<?php
    echo $this->Form->create('ABCata');
    echo $this->Form->input('title');
    echo $this->Form->input('body', array('rows' => '16'));
    echo $this->Form->input('custom_id', array('type' => 'hidden'));
    echo $this->Form->end('Save ABCata');
?>

我只有一张带有foreign key 字段的表格。

这里custom_id 只是一个唯一字段。

我收到此错误:

数据库错误

错误:SQLSTATE[42S22]:找不到列:1054 未知列 'where 子句'中的'ABCData.id' ... ...

请帮忙。

【问题讨论】:

  • 因为你使用的是findById。用适当的条件子句写出find

标签: php mysql cakephp


【解决方案1】:

正如 cmets 中所说,如果您的模型中没有 id,则无法按 id 搜索。你应该这样做

$post = $this->ABCData->findByCustomId($custom_id);

根据 Cake 约定,也可以指定条件,如

$post = $this->ABCData->find('first', array('conditions' =>
                                           array('ABCData.custom_id' => $custom_id)));

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2013-09-30
    相关资源
    最近更新 更多