PHP Doctrine : how to set refClass extra columns?

标签 php doctrine associations

我有以下架构

User:
  columns:
      id:
           type: integer
           primary: true
      name: string
  relations:
     UserGroup:
      local: userGroup_id
      foreign: id
      refClass: User2Group

UserGroup:
  columns:
      id:
           type: integer
           primary: true
      name: string
  relations:
     User:
      local: user_id
      foreign: id
      refClass: User2Group

User2Group:
    columns:
        user_id:
           type: integer
           primary: true
        userGroup_id:
            type: integer
            primary: true
        extraColumn: string

我正在努力做

$user=new Model_User();
        $user->name='user';

        $user->UserGroup[0]->name='group';
        $user->UserGroup[0]->extraColumn='test';

        $user->save();

但它给了我一个异常“Doctrine_Record_UnknownPropertyException”,消息是“UserGroup”上的未知记录属性/相关组件“extraColumn”,我做错了什么? (顺便说一下,我已经尝试将本地/外国更改为其他任何它仍然不起作用的内容)

最佳答案

Doctrine 并不真正支持连接表上的额外列。但是您可以使用 Doctrine_Query 访问和更新这些值。

  Doctrine_Query::create()
    ->update('User2Group')
    ->set('extraColumn', 'Dude its working')
    ->where('user_id = ?', $user['id'])
    ->andWhere('userGroup_id = ?', $userGroup['id'])
    ->execute();

要获取此值,您需要执行选择查询。

  Doctrine::getTable('User')->createQuery('u')
    ->addSelect('u.*, ug.*, u2g.extraColumn')
    ->leftJoin('u.UserGroup ug')
    ->leftJoin('ug.User2Group u2g WITH u2g.user_id = ?', $user['id'])
    ->execute();

关于PHP Doctrine : how to set refClass extra columns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888772/

相关文章:

javascript - Ajax请求未执行返回未定义

php - 如何将日期和时间转换为存储在 mysql datetime 中

doctrine-orm - Symfony2 Doctrine 未找到不同 bundle 的映射父类(super class)注释

node.js - Sequelize targetKey 不起作用

ruby-on-rails - Ruby on Rails 中的三重连接

ruby-on-rails - 有_许多 :through without a join table

javascript - AJAX:无法将 javascript 变量传递给 PHP 脚本中的 SQL 查询

php - PhpRunner 中的 IONCUBE 如何安装

doctrine - 如何在 Symfony2 Doctrine 中使用级联选项?

php - MySQL 选择列中所有值都相同的记录?