【发布时间】:2012-08-26 02:52:07
【问题描述】:
好的,我有两个表,用户和单位。 'Unit' 属于'User',而'User' 有很多'Unit'。我想访问我的单位表中的所有数据,并将我的用户表中的一些数据附加到视图中。这是我的控制器代码:
public function condos() {
$u=$this->User->Unit->find('all', array('conditions'=>array('type'=>'condo', 'active'=>1)));
$this->set('allcondos', $u);
}
我有两个模型,用户和单元,这是它们的代码: 来自unit.php:
class Unit extends AppModel {
var $name='Unit';
var $belongsTo=array(
'User'=>array(
'className'=>'User',
'foreignKey'=>'user_id'
) );
}
来自user.php:
class User extends AppModel {
var $name='User';
var $hasMany=array(
'Unit'=>array(
'className'=>'Unit',
'foreignKey'=>'user_id'
) );
}
这是我的查看代码:
<?php foreach ($allcondos as $condo) { ?>
<section class="listings">
<figure>
<img src="<?php echo $condo['Unit']['photo1']; ?>" />
</figure>
<h1><?php echo $condo['Unit']['complex'], ' ', $condo['Unit']['unitnum']; ?></h1>
<h2><?php echo $condo['Unit']['city']; ?>, <?php echo $condo['Unit']['state']; ?> | (<?php echo $condo['User']['area_code']; ?>)<?php echo $condo['User']['exchange'];?>-<?php echo $condo['User']['sln'];?></h2>
<p><?php echo $condo['Unit']['unit_desc']; ?></p>
</section>
<?php } ?>
我在调用 $condo['User']['any_field'] 时遇到问题,因为它返回零“用户”数据。 (它返回“单位”数据就好了)。很明显,我不知道如何访问这两个表。
如果我在视图中调试 $allcondos,它看起来像这样:
Array
(
[0] => Array
(
[Unit] => Array
(
[id] => 1
[user_id] => caribeincrentals
[additional fields] ...
)
[User] => Array
(
[id] =>
[user_id] =>
[additional fields] ...
)
)
[1] => Array ...
)
【问题讨论】:
-
你的表结构是什么?
-
我有一个用户表,其中包含大量信息,包括“user_id”字段。我有一个包含大量信息的单位表,包括“user_id”字段。我在我的控制器中再次更改了我的代码: public function condos() { $this->User->Unit->Behaviors->load('Containable'); $u=$this->User->Unit->find('all', array('conditions'=>array('Unit.type'=>'condo', 'Unit.active'=>1), '包含'=>array('User') )); $this->set('allcondos', $u);现在我得到了单位的数据,加上用户表的字段,但关联数组中的字段没有数据
-
如果您忽略
containable行为并在您的find()中指定recursive是否有效? -
我尝试先在 $this->User->Unit 上将其设置为 1,然后是 $this->User,然后是 $this->Unit,但它们都没有工作。
-
请将
debug( $allcondos );的输出发布到您的视图中。
标签: mysql cakephp cakephp-model