我正在使用DATAMAPPER ORM V1.8.2。我对 from_array 方法有疑问:
首先,我有* name =“group_id”*
的下拉列表<select name="group_id" class="small-input">
<option value="1">Guest</option>
<option value="2" selected="selected">Member</option>
<option value="3">Manager</option>
<option value="4">Administrator</option>
</select>
在表用户(数据库)中,我有一个名为: group_id 的字段。
在控制器中:
....
$user->from_array($_POST, array('username', 'email', 'status', 'group_id'));
....
// then save
....
一切都很好。
但是当我传递 from_array()的第三个参数时, TRUE 会立即保存,例如:
$user->from_array($_POST, array('username', 'email', 'status', 'group_id', TRUE));
无法从$ _POST获取group_id。 请帮帮我,谢谢。
答案 0 :(得分:0)
将group_id
表单字段重命名为$has_one
(可能是group
)或$has_many
(可能是groups
)中的关系名称并添加调用$fields
时,from_array()
数组的名称。所以像这样:
// $_POST = array('group' => 3); // let's say this is what's coming in
$user->from_array($_POST, array('username', 'email', 'status', 'group', TRUE));
注意对称性:
这就是发生的事情:
required
模型的User
字段中有group
,这是关系的名称。User
个实例以及名为group_id
的输入字段,但该关系名为组。from_array()
方法内部使用代码checks every key is its a has_one
or a has_many
relation来收集最终保存的相关对象。由于您的数据有group_id
,但您的关系名为group
,但与不匹配,因此不会提取相关的组实例。from_array()
save is called with the related objects gathered结束时,通过字段循环,在没有任何对象的情况下。_count_related()
为您的用户组启动,但它找不到该组,"and take these with you too" second array为空(这是第3步中收集的对象出现的位置)< / LI>
related_required
验证失败并停止保存过程。