查询中的字段名错误与Criteria和Many-To-Many-Relation

时间:2017-10-25 10:09:52

标签: doctrine-orm orm criteria relation

当我尝试在多对多关系中使用不同列名的属性上使用简单Criteria时,Doctrine使用propertyname作为字段而不是列名。

人ORM定义

...
name:
    type: string
    nullable: false
    length: 50
    options:
        fixed: false
    column: '`key`'
...

具有不同列名的属性ORM定义

$criteria = Criteria::create()
    ->where(Criteria::expr()->eq('name', $attributeName))
    ->setFirstResult(0)
    ->setMaxResults(1);

if ($this->getAttributes()->matching($criteria)->first()) {
    return true;
}

人:: hasAttribute() - 方法

SELECT 
    te.id AS id, 
    te.description AS description, 
    te.key AS key 
FROM 
    attribute te 
JOIN 
    person_attribute t 
ON 
    t.attribute_id = te.id 
WHERE 
    t.person_id = ? 
        AND 
    te.name = ?     ## <- This should be "te.`key` = ?"

生成的Statement

"scripts": {
    "start": "node ./bin/www",
    "test":  "npm start && mocha"
 }

1 个答案:

答案 0 :(得分:1)

问题出在“lib / Doctrine / ORM / Persisters / Collection / ManyToManyPersister.php”类中,函数“loadCriteria()”中的行:

import imageCacheHoc from 'react-native-image-cache-hoc';
const CacheableImage = imageCacheHoc(Image);

export default class App extends Component<{}> {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>Welcome to React Native!</Text>
        <CacheableImage style={styles.image} source={{uri: 'https://i.redd.it/rc29s4bz61uz.png'}} />
        <CacheableImage style={styles.image} source={{uri: 'https://i.redd.it/hhhim0kc5swz.jpg'}} permanent={true} />
      </View>
  );
  }
}

该修补程序已添加到github linkpull request

如您所见,上面的代码已更改为:

var slider = $("#slider-vertical");

var a = function() {
    if(slider.slider("instance")) {
        slider.slider('value', 1);
        console.log('set value');
    } else {
        console.log('ERROR: cannot set value prior to initialization');
    }
}

var b = function() {
    slider.slider();
    console.log('initialized');
}

a();
b();
a();

当前版本不使用此修复程序。 它将成为2.6版本的一部分。 我建议你使用master分支中的代码。