顧客の住所を作成または更新するコードを作成しました。アドレスの作成は期待どおりに機能していますが、アドレスの更新で次の SQL エラーが発生しています。
顧客住所情報の設定に失敗しました - SQLSTATE[23000]: 整合性制約違反: 1452 子行を追加または更新できません: 外部キー制約が失敗しました (
magedev
.customer_address_entity
, CONSTRAINTFK_CUSTOMER_ADDRESS_ENTITY_PARENT_ID_CUSTOMER_ENTITY_ENTITY_ID
FOREIGN KEY (parent_id
) REFERENCEScustomer_entity
(entity_id
) ON DELETE )
これが私のコードです:
// Determine Address Type
$is_default_billing = 0;
$is_default_shipping = 0;
$addressType = intval($address_info->AddressType);
if ($addressType >= 0) {
if ($addressType == 0) {
$is_default_billing = 1;
$is_default_shipping = 1;
} else if ($addressType == 1) {
$is_default_billing = 1;
} else if ($addressType == 2) {
$is_default_shipping = 1;
}
}
// Parse Address Data
$address_data = array(
'firstname' => $address_info->Firstname,
'lastname' => $address_info->Lastname,
'company' => $address_info->Company,
'street' => array(
0 => $address_info->AddressLine1,
1 => $address_info->AddressLine2
),
'city' => $address_info->City,
'region_id' => '',
'region' => $address_info->Region,
'postcode' => $address_info->Postcode,
'country_id' => getCountryId($address_info->Country),
'telephone' => $address_info->Telephone,
'is_default_billing' => $is_default_billing,
'is_default_shipping' => $is_default_shipping
);
// Anticipate Error
try
{
// Get Customer Model
$customAddress = Mage::getModel('customer/address');
// Address Create Mode
if ($address_info->QueueAction == 'Create')
{
// Create Address
$customAddress->setData($address_data)
->setCustomerId(intval($address_info->MagentoCustomerId))
->setSaveInAddressBook(true)
->save();
}
// Address Update Mode
else if ($address_info->QueueAction == 'Update')
{
// Update Address
$customAddress->load(intval($address_info->MagentoId));
$customAddress->setData($address_data)
->save();
}
// Resource Clean-Up
$customAddress = null;
// Success - Returns Queue Id Back
API_Response(false, '', $address_info->QueueId);
}
catch (Exception $e)
{
// Error
API_Response(true, $e->getMessage());
}
ここで何が間違っていますか?