1

我的模块中有下一个代码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动态生成。

有人知道该怎么做吗?

PS错误一定是field_data_field_product_photos,不是field_revision_field_product_photos

4

1 回答 1

1

看看生成的 SQL:

...WHERE (p.entity_id IN ())...

很简单,$product_nids在您将它传递给查询时它是空的,这会产生如上所述的无效 SQL。为了避免这种情况,要么修复任何阻止$product_nids正确填充的错误,要么添加一些错误检查:

if (!empty($product_nids)) {
  $query->condition('p.entity_id', $products_nids, 'IN' );
}
于 2013-04-04T10:16:10.083 回答