我的模块中的form_alter
中有下一个代码:
$query = db_select( 'field_data_field_product_photos', 'p' );
$query->addField( 'p', 'entity_id', 'pid' );
$query->addField( 'f', 'uri', 'uri' );
$query->join('file_managed', 'f', 'p.field_product_photos_fid=f.fid' );
$query->condition('p.entity_id', $products_nids, 'IN' );
$query->condition('p.delta', 0, '=' );
$result = $query->execute();
但是当在表单中点击其他收音机时,ajax返回错误
$products_nids
就像array(10,14)
一样。如果放置array(10,14)
而不是$products_nids
,它将正常工作。但是$products_nids
会动态生成。
有人知道该怎么做吗?
P.S。错误必须是field_data_field_product_photos
,而不是field_revision_field_product_photos
答案 0 :(得分:1)
看看生成的SQL:
...WHERE (p.entity_id IN ())...
很简单,$product_nids
在您将其传递给查询时是空的,并且如上所述产生无效的SQL。为了避免这种情况,要么修复阻止$product_nids
正确填充的任何错误,要么添加一些错误检查:
if (!empty($product_nids)) {
$query->condition('p.entity_id', $products_nids, 'IN' );
}