我创建了两个数据库表:
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';
}
答案 0 :(得分:2)
在businesstype_tbls.id
中保存sellers_tbls.businesstype_tbls_business_type
是预期的行为。这是在模型之间建立关系的全部目的。
如果您希望以纯文本格式存储business_type
:
sellers_tbls.businesstype_tbls_business_type
的类型设置为可以包含businesstype_tbls.business_type
将$dt
设置为关联数组,并将每个键设置为其对应的值:
$dt=$this->Businesstype->find('list',array(
'fields'=>array('business_type','business_type')
));
话虽如此,如果您正在构建一个新的应用程序并从头开始设计数据模型,我建议您缩短表和字段名称。您的命名策略不仅复杂,而且也不遵循CakePHP惯例,从长远来看,这将使您的生活更加艰难。
为什么不只是以下?
<强>卖家强>
id
business_name
businesstype
(或businesstype_id
如果您想存储businesstypes.id
)mobile
<强> businesstypes 强>
id
type