这是不起作用的代码。
$select = $tariffsTable->select(Zend_Db_Table_Abstract::SELECT_WITHOUT_FROM_PART)
->from('tariff', null)
->where('id = ?', $this->id)
->joinLeft('characteristic_value',
'characteristic_value.tariff_id = id',
array('value_' . $locale, 'characteristic_id'))
->joinLeft('characteristic',
'id = characteristic_value.characteristic_id',
array('name_' . $locale, 'alias'));
$select->setIntegrityCheck(false);
$tariffCharacteristics = $tariffsTable->fetchAll($select)->toArray();
谢谢你的帮助!我已经解决了这个问题。这是工作代码:
$select = $tariffsTable->select(Zend_Db_Table_Abstract::SELECT_WITHOUT_FROM_PART)
->from('tariff', null)
->joinLeft( array('characteristic_value'),
'characteristic_value.tariff_id = tariff.id',
array('value_' . $locale))
->joinLeft(array('characteristic'),
'characteristic.id = characteristic_value.characteristic_id',
array('name_' . $locale, 'alias'))
->where('tariff.id = ?', $this->id);
$select->setIntegrityCheck(false);
答案 0 :(得分:2)
这是因为您在id
和/或WHERE
子句中使用了LEFT JOIN ON
列,而您正尝试加入的两个表中都应包含id列。
您需要指定在两种情况下都应使用哪个ID。
喜欢characteristic.id或characteristic_value.id或tarriff.id。
您可以使用数组作为from()
和joinLeft()
方法的参数来使用别名。
$select->from(array('t' => 'tarriff'))
->where('t.id = ?', $this->id);