【问题标题】:How to save this data in cakePHP?如何在 cakePHP 中保存这些数据?
【发布时间】:2014-02-01 07:51:26
【问题描述】:

我有一个User 模型和一个Boarder 模型,不是每个用户都是寄宿生,但每个寄宿生都是用户。

用户模型强>

class User extends AppModel
{
    public $primaryKey = "user_id";
    public $hasMany = 'Boarder';
}

棋盘模型

class Boarder extends AppModel
{
    public $belongsTo = 'User';
}

add.ctp of my Boarders View

<?php 
echo $this->Form->create('Boarder', array('role' => 'form', 'novalidate' => true)); 
echo $this->Form->input('user_name');
echo $this->Form->input('bdr_home_address');
echo $this->Form->end();
?>

所以在提交过程中,控制器中的添加函数现在会收到一个类似这样的数组

Array
(
    [Boarder] => Array
        (
            [user_name] => 'John',
            [bdr_home_address] => 'Some Street, Some City'
        )
)

[user_name] 将保存在用户模型中,而[bdr_home_address] 将保存在寄宿者模型中。如我的$this-&gt;Form-&gt;create 所示,请求将被定向到 BoardersController,添加操作。 那么我该如何保存呢?

BoardersController

class BoardersController extends AppController
{
    public function add()
    {

    }
}

【问题讨论】:

    标签: php cakephp model save model-associations


    【解决方案1】:

    如果每个Boarder 都是User,则Boarder 表应包含user_id 字段。

    add.ctp 表单可能看起来像

    <?php
    echo $this->Form->create('Boarder', array('role' => 'form', 'novalidate' => true));
    echo $this->Form->input('User.username');
    echo $this->Form->input('Boarder.home_address');
    echo $this->Form->submit();
    echo $this->Form->end();
    ?>
    

    来自控制器的add 函数是:

    public function add()
    {
        if ($this->request->is('post')) {
            debug($this->request->data);
            if ($this->Boarder->saveAssociated($this->request->data)) {
                // saved
            } else {
                // not saved
            }
        }
    
    }
    

    【讨论】:

    • 它就像魔术一样工作,这是在 Cake API 书中吗?非常感谢@cornelb先生
    • saveAssociated 在api书book.cakephp.org/2.0/en/models/…
    • 我也可以在更新中这样做吗?因为我有更新中的探针。我的 id 字段未命名为 id 它的 user_id 所以当我使用 $this-&gt;User-&gt;id = $id 它不会工作。如果我的 id 被命名为 user_id 以便我可以在更新时使用 $this-&gt;User-&gt;id 怎么办?
    • 我真的在更新数据时遇到问题,我不保存关联可以更新吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多