Смысл непонятки - то что AR::link "ранее загруженные" объекты для связи настраивает только для одной из участвующих моделей, для текущей, а для связанной - нет.
Для примера.
Код: Выделить всё
Таблица ORDERS:
order_id customer_id
4 2
5 2
6 1
Код: Выделить всё
$cu = Customer::findOne(2);
var_dump($cu->orders); // 2 элемента (4 и 5)
$order = Order::findOne(6);
var_dump($order->customer); // тут закешируется ссылка на Customer(id=1)
$cu->link('orders', $order); // связываем
var_dump($cu->orders); // 3 элемента (4,5,6). Тут корректно обновилось
var_dump($order->customer); // == Customer(id=1) вместо Customer(id=2), т.е. тут не настроилось на новое