0
CakePHP的新尝试,并尝试我的第一次加入。我有一个名为用户的表格和一个名为项目的表格。一个用户可以有很多项目,所以项目有一个user_id列。CakePHP表加入帮助
这是我在projects_controller行动:
function index() {
$this->set('projects', $this->Project->find('all', array('joins' => array(
array(
'table' => 'users',
'alias' => 'UsersTable',
'type' => 'inner',
'foreginKey' => false,
'conditions' => array('UsersTable.id = Project.user_id')
)
))));
}
这里是SQL转储:
SELECT `Project`.`id`, `Project`.`title`, `Project`.`created`, `Project`.`website`, `Project`.`language_id`, `Project`.`user_id` FROM `projects` AS `Project` inner JOIN users AS `UsersTable` ON (`UsersTable`.`id` = `Project`.`user_id`) WHERE 1 = 1
正如你将看到的一切似乎除了它从用户表中未选择任何东西不错,但它是加入它。
这是我的观点:
<table>
<tr>
<th>Name</th>
<th>User</th>
</tr>
<?php foreach ($projects as $project): ?>
<tr>
<td>
<?php echo $html->link($project['Project']['title'], array('controller' => 'projects', 'action' => 'view', $project['Project']['id'])); ?>
</td>
<td>
<?php echo $html->link($project['Project']['username'], array('controller' => 'users', 'action' => 'view', $project['Project']['user_id'])); ?>
</td>
</tr>
<?php endforeach; ?>
有我搞砸了什么地方?该视图尝试列出所有项目以及拥有它的用户。
非常感谢,
Jonesy
你想达到什么目的?如果所有项目都有与之关联的用户,那么在这种情况下,内部联接的行为就像左连接一样。如果您试图按用户列出所有项目,那么您需要在'User'模型上进行查找并将项目表内部连接到它。 – 2010-08-21 10:31:20
我更新了我的问题,我想列出项目表中的所有项目并加入用户,这样我可以列出项目名称和创建它的用户,因此这是在projects_controller – iamjonesy 2010-08-21 10:43:48
我已将SQL转储和更新的视图添加到我的问题 – iamjonesy 2010-08-21 10:55:58