У меня странная проблема, из-за которой одно из моих отношений в моих моделях обновляет внешний ключ до неправильной цифры.
У меня занятия Order
, OrderProduct
а также OrderAddresses
,
Следующие:
$order_addresses = OrderAddress::find(array(
"conditions" => "order_id = :order_id: and active = 'Y'",
"bind" => array("order_id" => $order->getId())
));
foreach ( $order_addresses as $order_address ) {
$order_address->save();
}
По какой-то причине, прежде чем я выполню приведенный выше код, все мои внешние ключи в базе данных являются правильными, однако, когда этот код выполняется, происходит следующий SQL-запрос, который устанавливает внешний ключ (order_id) на номер модели, которая использовалась в код ранее:
UPDATE `order_address` SET `order_id` = ?, `address_id` = ? WHERE `id` = ?
Я понятия не имею, что здесь происходит, и не могу найти обходной путь.
OrderAddress
public function initialize()
{
//use softdelete
$this->addBehavior(new SoftDelete(
array(
"field" => "active",
"value" => "N")
));
parent::initialize();
$this->belongsTo("order_id", "Order", "id", array(
"alias" => "order"));
$this->belongsTo("address_id", "Address", "id", array(
"alias" => "address"));
}
Order
$this->hasMany("id", "OrderAddress", "order_id", array(
"alias" => "addresses"));
В качестве обходного пути я думал, что установлю order
снова на OrderAddress
Сделайте следующее, но это не помогло:
order_address->setOrder($order)
Задача ещё не решена.
Других решений пока нет …