AR::link - Возможный баг или так и задумывалось?

Уже исправленные репорты или принятые предложения
Ответить
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

AR::link - Возможный баг или так и задумывалось?

Сообщение maleks »

Структура таблиц как и в примере из доки. Таблица Customer и Order.

Смысл непонятки - то что AR::link "ранее загруженные" объекты для связи настраивает только для одной из участвующих моделей, для текущей, а для связанной - нет.
Для примера.

Код: Выделить всё

Таблица ORDERS:
order_id customer_id
4        2
5        2
6        1
Хочу поменять объекту ORDER с order_id ==6 пользователя с 1 на 2.

Код: Выделить всё

        $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), т.е. тут не настроилось на новое
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: AR::link - Возможный баг или так и задумывалось?

Сообщение samdark »

Задумывалось. Мы не производили действий над $order, его нужно обновить сначала.
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: AR::link - Возможный баг или так и задумывалось?

Сообщение maleks »

Самому в каждой такой ситуации прописывать

Код: Выделить всё

unset($order->customer); 
после link, да?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: AR::link - Возможный баг или так и задумывалось?

Сообщение samdark »

Скорее $order->refresh();
Ответить