cakephp如何将数据从dropdownlist保存到数据库表中

时间:2016-01-10 07:47:29

标签: cakephp orm foreign-keys relational-database cakephp-2.x

我创建了两个数据库表:

  • sellers_tbls

    • id
    • business_name
    • businesstype_tbls_business_type
    • mobile
  • businesstype_tbls

    • id
    • business_type

其中businesstype_tbls用于在注册时显示下拉列表类型。

提交表单后,register()正在businesstype_tbls.id中保存sellers_tbls.businesstype_tbls_business_type

如何在business_type中获取id而不是sellers_tbls

我的代码如下:

register.ctp

<tr>
  <td>Business type</td>
  <td><?php echo $this->Form->select('businesstype_tbls_business_type',$drop);?></td>
</tr>

SellerController

public function register()
{
    $this->loadModel("Seller");

    if($this->Seller->save($this->request->data))
    {
        $this->Session->setFlash('Successully save your information!');
    }

    $this->loadModel("Businesstype");
    $dt=$this->Businesstype->find('list',array('fields'=>array('id','business_type')));
    $this->set('drop',$dt);
}

模型Businesstype.php

class Businesstype extends AppModel
{
    public $name = 'businesstype_tbls';
    public $hashMany = 'sellers_tbls';
}

模型Seller.php

class Seller extends AppModel
{
    public $name = 'sellers_tbls';
    public $belongsTo = 'businesstype_tbls';
}

1 个答案:

答案 0 :(得分:2)

businesstype_tbls.id中保存sellers_tbls.businesstype_tbls_business_type是预期的行为。这是在模型之间建立关系的全部目的。

如果您希望以纯文本格式存储business_type

  1. 删除关系
  2. sellers_tbls.businesstype_tbls_business_type的类型设置为可以包含businesstype_tbls.business_type
  3. 内容的内容
  4. $dt设置为关联数组,并将每个键设置为其对应的值:

    $dt=$this->Businesstype->find('list',array(
        'fields'=>array('business_type','business_type')
    ));
    
  5. 话虽如此,如果您正在构建一个新的应用程序并从头开始设计数据模型,我建议您缩短表和字段名称。您的命名策略不仅复杂,而且也不遵循CakePHP惯例,从长远来看,这将使您的生活更加艰难。

    为什么不只是以下?

    • <强>卖家

      • id
      • business_name
      • businesstype(或businesstype_id如果您想存储businesstypes.id
      • mobile
    • <强> businesstypes

      • id
      • type