将模型链接在一起 hasMany cakephp
Linking Models Together hasMany cakephp
我有两个表:
Group(id/groupname)
People(id/name/groupid)
Group
有很多 People
在Group
模型中:
var $hasMany = array(
'People' => array(
'className' => 'People',
'foreignKey' => 'groupid'
)
);
这样可以吗???
我还希望我的组 index.ctp 显示组和属于它的人。
有人知道怎么做吗?
谢谢
首先:您需要使用正确的命名约定:
Group(id/name)
Person(id/name/group_id)
如果您在 table 上使用正确的命名约定,则可以使用 cake bake
自动生成模型、视图和控制器。
如何手动执行此操作:
在您的群组模型中,您需要设置您的关系:
public $hasMany = array(
'Person' => array(
'className' => 'Person',
'foreignKey' => 'group_id'
)
);
我假设您的 GroupsController 具有正确的 index
功能:
public function index() {
$this->set('groups', $this->paginate());
}
接下来,您需要在 Groups/index.ctp 中显示这一切。
为此,您循环遍历所有组,并显示每个组。每个组都会有它的所有人员。如果您不完全确定您的控制器传递给视图的数据类型,您可以在视图中执行 debug($groups)
以查看结构是什么样的。
这是一种非常简单的方式,您可以通过您的组查看所有用户:
<table>
<tbody>
foreach($groups as $group){
?>
<tr>
<td><?php echo $group['Group']['name']; ?></td>
<td>
<?php foreach($group['Person'] as $person){
echo "<p>" . $person['name'] . "</p>";
} ?>
</td>
</tr>
<?php
}
?>
<tbody>
<table>
你在创建人的时候说你想select一个人的组:
在 PeopleController.php 下,确保你的 add() 函数中有这个:
// Get a list of all groups
$groups => $this->Person->Group->find('list');
// 'set' the $groups array so it's accessible in your view
$this->set(compact('groups'));
然后,在您的 add.ctp 视图中:
echo $this->Form->input('group_id', array());
CakePHP 的魔法应该会自动将您的组填充到 select 框中!
希望对您有所帮助!
我有两个表:
Group(id/groupname)
People(id/name/groupid)
Group
有很多 People
在Group
模型中:
var $hasMany = array(
'People' => array(
'className' => 'People',
'foreignKey' => 'groupid'
)
);
这样可以吗???
我还希望我的组 index.ctp 显示组和属于它的人。 有人知道怎么做吗?
谢谢
首先:您需要使用正确的命名约定:
Group(id/name)
Person(id/name/group_id)
如果您在 table 上使用正确的命名约定,则可以使用 cake bake
自动生成模型、视图和控制器。
如何手动执行此操作:
在您的群组模型中,您需要设置您的关系:
public $hasMany = array(
'Person' => array(
'className' => 'Person',
'foreignKey' => 'group_id'
)
);
我假设您的 GroupsController 具有正确的 index
功能:
public function index() {
$this->set('groups', $this->paginate());
}
接下来,您需要在 Groups/index.ctp 中显示这一切。
为此,您循环遍历所有组,并显示每个组。每个组都会有它的所有人员。如果您不完全确定您的控制器传递给视图的数据类型,您可以在视图中执行 debug($groups)
以查看结构是什么样的。
这是一种非常简单的方式,您可以通过您的组查看所有用户:
<table>
<tbody>
foreach($groups as $group){
?>
<tr>
<td><?php echo $group['Group']['name']; ?></td>
<td>
<?php foreach($group['Person'] as $person){
echo "<p>" . $person['name'] . "</p>";
} ?>
</td>
</tr>
<?php
}
?>
<tbody>
<table>
你在创建人的时候说你想select一个人的组:
在 PeopleController.php 下,确保你的 add() 函数中有这个:
// Get a list of all groups
$groups => $this->Person->Group->find('list');
// 'set' the $groups array so it's accessible in your view
$this->set(compact('groups'));
然后,在您的 add.ctp 视图中:
echo $this->Form->input('group_id', array());
CakePHP 的魔法应该会自动将您的组填充到 select 框中! 希望对您有所帮助!