- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我建立了 3 个模型和 3 个表,其中 2 个模型和表具有 hasMany 关系:用户和组。 UserGroup 属于用户和组。
class User extends \Phalcon\Mvc\Model {
public $id;
public $name;
public function initialize()
{
$this->hasMany(
'id',
'UserGroup',
'user_id',
array(
'foreignKey' => array(
'action' => Relation::ACTION_CASCADE
)
));
}
组:
use Phalcon\Mvc\Model\Validator\PresenceOf;
class Group extends \Phalcon\Mvc\Model {
public $id;
public $name;
public function initialize()
{
$this->hasMany('id', 'UserGroup', 'group_id', array(
"foreignKey" => array(
"message" => "Группа не может быть удалена, потому что её используют некоторые пользователи"
)
));
}
用户组:
<?php
class UserGroup extends \Phalcon\Mvc\Model {
public $id;
public $group_id;
public $user_id;
public function initialize()
{
$this->belongsTo("user_id", "User", "id", array(
"foreignKey" => true
));
$this->belongsTo("group_id", "Group", "id", array(
"foreignKey" => array(
"message" => "Выбранная группа для пользователя не существует!"
)
));
}
}
然后,当我创建一个新用户时,一切正常:
public function createAction()
{
$this->checkPost();
// Get user name
$userName = $this->request->getPost('name');
$userGroups = $this->request->getPost('groups');
if ($this->checkExisting($userName)) {
$this->returnJson('error', 'Такой пользователь уже существует!');
return;
}
// Create user
$user = new User();
$user->name = $userName;
$success = $user->create();
if ($success) {
// Add user groups
$userGroupModels = array();
$userGroupCount = 0;
if (!empty($userGroups)) {
foreach($userGroups as $groupId) {
$userGroupModels[ $userGroupCount ] = new UserGroup();
$userGroupModels[ $userGroupCount ]->user_id = $user->id;
$userGroupModels[ $userGroupCount ]->group_id = $groupId;
$userGroupCount++;
}
$user->userGroup = $userGroupModels;
$user->save();
}
$this->returnJson('success', 'Пользователь добавлен!');
return;
} else {
$this->returnJson('error', 'Ошибка добавления пользователя!');
return;
}
}
但是当我将 User 的关系更改为 n-n 时:
$this->hasManyToMany(
'id',
'UserGroup',
'user_id', 'group_id',
'Group',
'id',
array(
'foreignKey' => array(
'action' => Relation::ACTION_CASCADE
)
));
它停止工作了。没有错误。用户已添加,关系 - 未添加。
救命!
最佳答案
多对多关系需要另一个表将它们粘合在一起。在您的情况下,这是用户组。该表没有定义任何关系,它只是其他两个表的帮助器。
话虽如此,您不能在 UserGroup 中使用 ownTo,因为这会声明多对一关系。
关于php - Phalcon hasManyToMany 停止添加与数据库的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622821/
我在使用多对多关系的Fluent NHibernate示例中遇到问题。我试图找出类似案例的例子,但发现了很多吨,但我仍然遇到同样的问题。 运行测试项目时,将引发以下异常: NHibernate.Pro
首先,我建立了 3 个模型和 3 个表,其中 2 个模型和表具有 hasMany 关系:用户和组。 UserGroup 属于用户和组。 class User extends \Phalcon\Mvc\
我一直在对一个我称为 Task 的实体进行多对多映射。一个任务可以有很多 child 和很多 parent 。中间有一个连接表,只有两个 FK 列“ParentTaskId”和“ChildTaskId
我正在尝试使用 Fluent NHibnernate 映射多对多集合。我的模型类具有此属性: public virtual IList Screenshots { get { return _
我是一名 NHibernate 新手,正在尝试使用 Fluent NHibernate 配置现有数据库。问题在于多对多映射,在本例中以图书馆和书籍为代表。我想这应该是非常基本的东西,但我得到以下异常:
我是一名优秀的程序员,十分优秀!